6

XML ドキュメントを読み込んで、XPath で検索しようとしています。このファイルのルート ノードは<t:Transmission xmlns:t='urn:InboundShipment'>で、ファイルの末尾は で適切に閉じられてい</t:Transmission>ます。

私の問題は、子孫軸を使用しないとツリーをたどることができないことです。言い換えると、次のことができます:SelectSingleNode("//TransactionHeader[SHIPPERSTATE='CA']")そして見返りにノードを取得します。しかし、私は同等であるべきことを行うことができません:SelectSingleNode("/Transmission/TransmissionBody/Transaction/TransactionHeader[SHIPPERSTATE='CA']")

を削除するt:と、XPath 検索を実行して/Transmissionファイル全体を取得できます。そこにあると、t:nullになります。または、試してみるSelectSingleNode("t:Transmission")と、XPath ステートメントでエラーが発生します。

通常、ルート要素に対してクエリを実行する必要はないので、検索には子孫軸を使用するだけで十分です。しかし、XML は私には有効に見えるので、これに対処する方法を知りたいです。さらに、対処方法がわからないという理由だけで、クライアントに「t:」を削除するように依頼したくありません。

4

1 に答える 1

8

「t:」は名前空間プレフィックスで、名前空間「urn:InboundShipment」にバインドされています。それを適切に処理するには、プレフィックスが何にバインドされているかを c# に伝える必要があります。 このページでは、System.Xml.XmlNamespaceManager を使用して名前空間を処理する方法について説明する必要があります。

編集:この回答も参照してください。

于 2009-10-16T17:26:39.240 に答える