将名称空间添加到xpath

问题描述:

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

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

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

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

您可以试试这个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,我无法测试它。