将命名空间添加到xpath

时间:2013-02-13 18:18:33

标签: c# xml xpath

我有充满xpath的类,现在需要一个specfic命名空间。我怎么能做到这一点?重构此代码最简单的方法是什么?找到替换?

如果我不提前知道命名空间,那么将来获取特定节点的最佳方法是什么?

susr1 = root.SelectSingleNode("/PurchaseOrderRequest/DocumentHeader/DocumentInformation/DocumentIdentification/Type");

susr1 = root.SelectSingleNode("/PurchaseOrderRequest/ssdh:DocumentHeader/ssdh:DocumentInformation/ssdh:DocumentIdentification/ssdh:Type");

1 个答案:

答案 0 :(得分:1)

您可以试试XML Library。使用XPathElement()。如果您可以使用它,这是一个.Net 3.5解决方案。

XElement root = XElement.Load(file) or .Parse(string)

然后,只要没有具有相同名称(但名称不同的名称空间)的冲突节点,您的任何一个xpath都应该工作。

XElement susr1 = root.XPathElement("/PurchaseOrderRequest/DocumentHeader/DocumentInformation/DocumentIdentification/Type");

XElement susr1 = root.XPathElement("/PurchaseOrderRequest/ssdh:DocumentHeader/ssdh:DocumentInformation/ssdh:DocumentIdentification/ssdh:Type");

库应该为你找出命名空间。如果没有示例xml,我无法测试它。