C#,xml解析。 获取标签之间的数据

我有一个字符串:

responsestring = " SOmetext" 

我怎样才能获得它们之间的价值

  and  

我的尝试:

 responseString.Substring(responseString.LastIndexOf("") + 6, 8); // this sort of works , but won't work in every situation. 

也尝试搞乱xmlreader,但找不到解决方案。

TY

其他人建议使用LINQ to XML解决方案,如果可能的话,我也会使用它。

如果你坚持使用.NET 2.0,请使用XmlDocument甚至是XmlReader

但是不要尝试使用SubstringIndexOf自己操作原始字符串。 使用某些描述的XML API。 否则你弄错。 这是使用正确的工具来完成工作的问题。 正确解析XML是一项重要的工作 – 已经完成的工作。

现在,只是为了使这个完整答案,这是一个使用您的样本数据的简短但完整的程序:

 using System; using System.Xml.Linq; class Test { static void Main() { string response = @" Some text"; XDocument doc = XDocument.Parse(response); foreach (XElement hashElement in doc.Descendants("hash")) { string hashValue = (string) hashElement; Console.WriteLine(hashValue); } } } 

显然,这将遍历所有 hash元素。 如果你只想要一个,你可以使用doc.Descendants("hash").Single()doc.Descendants("hash").First()取决于你的要求。

请注意,我在此处使用的转换和Value属性都将返回元素中所有文本节点的串联。 希望你没问题 – 或者如果有必要,你可以得到第一个直接孩子的文本节点。

尝试

 XDocument doc = XDocument.Parse(str); var a = from hash in doc.Descendants("hash") select hash.Value; 

您将需要System.Core和System.Xml.Linq程序集引用

var val = XElement.Parse();

val.Descendants(…)。价值

让你的xml格式良好,并用反斜杠转义双引号。 然后应用以下代码

  XDocument resp = XDocument.Parse("SOmetext"); var r= from element in resp.Elements() where element.Name == "hash" select element; foreach (var item in r) { Console.WriteLine(item.Value); } 

您可以使用xmlreader和/或xpath查询来获取所有需要的数据。