我有充满xpath的类,现在需要一个specfic命名空间。我怎么能做到这一点?重构此代码最简单的方法是什么?找到替换?
如果我不提前知道命名空间,那么将来获取特定节点的最佳方法是什么?
susr1 = root.SelectSingleNode("/PurchaseOrderRequest/DocumentHeader/DocumentInformation/DocumentIdentification/Type");
susr1 = root.SelectSingleNode("/PurchaseOrderRequest/ssdh:DocumentHeader/ssdh:DocumentInformation/ssdh:DocumentIdentification/ssdh:Type");
答案 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,我无法测试它。