我可以在c#中获得XML的具体示例吗?

Chr*_*her 5 .net c# xml xslt xpath

我试图从XML文档及其子代中提取多个元素,但我无法在任何地方找到有用的示例... MSDN非常模糊.这是.Net中的c#

我已经动态创建了这个XML并将其转换为字符串.我一直在尝试使用带有NodeList的XmlNode来遍历foreach部分中的每个文件,但它无法正常工作.

这是一些示例XML:

<searchdoc>
    <results>
        <result no = "1">
            <url>a.com</url>
            <lastmodified>1/1/1</lastmodified>
            <description>desc1</description>
            <title>title1</title>
        </result>
        <result no = "2">
            <url>b.com</url>
            <lastmodified>2/2/2/</lastmodified>
            <description>desc2</description>
            <title>title2</title>
        </result>
    </results>
</searchdoc>
Run Code Online (Sandbox Code Playgroud)

我需要拉出每条完整的路径 <result>

Enr*_*lio 5

多种方法可以解决此问题,具体取决于您正在使用的.NET Framework版本:

.NET 1.x,2.0和3.0

通过XPathDocument类发出XPath查询,您可以轻松地从XML文档中获取已过滤的节点列表:

using (var reader = new StringReader("<Results><Result>...</Result></Results>"))
{
  var document = new XPathDocument(reader);
  var navigator = document.CreateNavigator();
  var results = navigator.Select("//result");

  while (results.MoveNext())
  {
    Console.WriteLine("{0}:{1}", results.Current.Name, results.Current.Value);
  }
}
Run Code Online (Sandbox Code Playgroud)

.NET 3.5及更高版本

您应该使用LINQ to XML来查询和过滤XML层次结构,因为它提供了比XPath语法更具表现力的API :

var document = XDocument.Parse("<Results><Result>...</Result></Results>");
var results = document.Elements("result");

foreach (var item in results)
{
  Console.WriteLine("{0}:{1}", item.Name, item.Value);
}
Run Code Online (Sandbox Code Playgroud)

相关资源: