我有一个包含格式良好的xml的字符串.我想导航该字符串中的XML以提取某些节点中的文本.如何使用内置的.NET类有效地完成此任务.您将使用哪个.NET XML类?为什么?
非常感谢您的帮助.
注1:Linq不适用于我.注意2:编辑XML并不重要.我只需要只读访问权限.
Rob*_*ney 11
为了速度,使用XmlReader
:
using (StringReader sr = new StringReader(myString))
using (XmlReader xr = XmlReader.Create(sr))
{
while (xr.Read())
{
if (xr.NodeType == XmlNodeType.Element && xr.Name == "foo")
{
Console.WriteLine(xr.ReadString());
}
}
}
Run Code Online (Sandbox Code Playgroud)
上面打印出XML文档中名为"foo"的每个元素的文本内容.(好吧,有点. ReadString
不能非常优雅地处理嵌套元素.)
使用a XPathDocument
比较慢,因为整个文档在开始搜索之前都会被解析,但它具有简单性的优点:
using (StringReader sr = new StringReader(myString))
{
XPathDocument d = new XPathDocument(sr);
foreach (XPathNavigator n in d.CreateNavigator().Select("//foo/text()"))
{
Console.WriteLine(n.Value);
}
}
Run Code Online (Sandbox Code Playgroud)
如果您不关心性能或内存利用率,最简单的方法是使用XmlDocument
:
XmlDocument d = new XmlDocument();
d.LoadXml(myString);
foreach (XmlNode n in d.SelectNodes("//foo/text()"))
{
Console.WriteLine(n.Value);
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*ell 10
导航?可能XPathDocument
:
string s = @"<xml/>";
XPathDocument doc = new XPathDocument(new StringReader(s));
Run Code Online (Sandbox Code Playgroud)
来自MSDN,
使用XPath数据模型提供XML文档的快速,只读,内存中表示.
与XmlDocument
etc 不同,它针对只读使用进行了优化; 效率更高但功能更弱(即你无法编辑它).有关如何查询的说明,请参见此处.
归档时间: |
|
查看次数: |
7419 次 |
最近记录: |