如何在c#中选择可以位于不同级别的XPath节点

时间:2015-05-29 10:52:20

标签: c# xml xpath xml-parsing

我正在尝试使用xpath

解析c#中的xml
Sort

因此,“Shape”标签可以位于“Slide”标签下,也可以位于“Presentation”标签下。有没有办法用xpath获取两个节点?

4 个答案:

答案 0 :(得分:2)

所有具有祖先幻灯片和演示文稿的形状

//Shape[ancestor::Slide and ancestor::Presentation]

仅适用于您的xml

Element='<Shape Name="Title">
  <FontSize Value="36" />
</Shape>'

如果您想确保演示文稿高于幻灯片:

//Shape[ancestor::Slide[ancestor::Presentation]]

答案 1 :(得分:0)

您可以使用类似的内容(假设doc XElement已加载xml)

doc.XPathSelectElements("//Shape");

此处XPath表达式//Shape<Shape>节点中选择文档中的所有doc节点,无论它们在何处。

答案 2 :(得分:0)

您可以使用linq to xml并执行类似

的操作
var xmlparsed = XElement.Parse(xml);
var shapes = xmlparsed.Elements().Descendants("Shape");

答案 3 :(得分:0)

只需使用Xpath

//Shape

这将为您提供形状节点

<Shape Name="Title">
  <FontSize Value="36" />
</Shape>
<Shape Name="Title">
  <FontSize Value="36" />
</Shape>