1

特定の名前空間が必要な xpath でいっぱいのクラスがあります。どうすればこれを達成できますか? このコードをリファクタリングする最も簡単な方法は何ですか? 置換を見つけますか?

名前空間が事前にわからない場合、将来特定のノードを取得するための最良の方法は何ですか?

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

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

1 に答える 1

1

このXML ライブラリを試すことができます。を使用し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なしではテストできません。

于 2013-02-13T19:51:12.213 に答える