c# - 如何在 Linq-to-XML 中按路径查找 XML 节点

标签 c# xml xpath linq-to-xml

如果我将特定节点的路径作为字符串获取,我能否通过使用 XElement(或 XDocument)的 Linq/Method 以某种方式轻松找到所述节点。

有许多不同类型的 XML 对象,作为额外的奖励,如果您能为我提供一份关于为什么/如何使用不同类型的指南,那就太好了。

编辑:好的,在被指向 XPathSelectElement 之后,我正在尝试它,所以我可以给他正确的答案,但我不能完全让它工作。这是我正在尝试的 XML

<Product>
  <Name>SomeName</Name>
  <Type>SomeType</Type>
  <Quantity>Alot</Quantity>
</Product>

和我的代码

string path = "Product/Name";
string name = xml.XPathSelectElement(path).Value;

请注意我的字符串来自其他地方,所以我猜它不一定是文字(至少在 Debug模式下它看起来像上面那个)。我也试过在前面添加/。它给了我一个空引用。

最佳答案

尝试使用 XPathSelectElement XElement的扩展方法.您可以向该方法传递一个 XPath 表达式以进行评估。例如:

XElement myElement = rootElement.XPathSelectElement("//Book[@ISBN='22542']");

编辑:

在回复您的编辑时,请检查您的 XPath 表达式。如果您的文档仅包含该小片段,则 /Product/Name将作为前导斜线从文档的根部执行搜索:

XElement element = document.XPathSelectElement("/Product/Name");

如果有其他产品和<Product>不是您需要修改正在使用的 XPath 的根节点。

关于c# - 如何在 Linq-to-XML 中按路径查找 XML 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3458566/

相关文章:

c# - 如果类更改,是否需要重新编译和重新部署项目中的所有程序集?

c# - 解码 Base64 和 Inflate Zlib 压缩 XML

c# - 在 appdata 文件夹中创建 sql server 压缩文件

python - 我收到一个 AttributeError : 'HtmlResponse' object has no attribute 'xpath' in scrapy

java - 如何在 Xalan 扩展函数实现中计算 XPath 表达式?

xslt - 测试节点中的第一个子节点

c# - 反序列化时如何忽略下划线

xml - 如何将xpath的值放入html img标签中

java - 解码为 xml 中具有命名空间的子字段提供 null 值

c# - 从 Web 的 XML 文件中获取值