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
。
但是不要尝试使用Substring
和IndexOf
自己操作原始字符串。 使用某些描述的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查询来获取所有需要的数据。