名前空間と読み込みXMLノードについては多くの投稿がありますが、特定のクエリに対する回答を見つけることができませんでした。私は自分のアプローチが正しいと信じていますが、私はそれが働くことを妨げている何かが明らかに欠けています。複数の名前空間を持つ子ノードを読む
概要 - XMLを返すWebサービスコールを作成しています。これをクリーンアップし、データテーブルを動的に作成してデータを取り込む必要があります。クリーンアップするには、複数の名前空間を含む返されたXMLから必要なノードを読み込もうとしています。
ドキュメントからデータを取得できますが、必要なレベルではデータを取得できません。 XMLContentノードリストに「Container」レベルのデータを格納させたい。
コード内のコメントは、私にデータを与える行を示していますが、必要なレベルではなく、次のレベルを返すと予想される行は表示されませんが、何も戻されません。私は必要なものを得ることに感謝私は別のレベルを下げる必要がありますが、これは、ノードリストがnullを返すポイントです。
XMLを最初に操作することなくデータセットまたはデータテーブルに読み込むことはできません。
サンプルXML
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="namespaceone" xmlns:xsi="namespacetwo" xmlns:xsd="namespacethree">
<soap:Body>
<Response xmlns="http://namespacefour">
<Result>
<Data xmlns="http://namespacefive" xmlns:t="http://namespacesix">
<Container>
<Properties>
<Property1>a</Property1>
<Property2>b</Property2>
</Properties>
</Container>
<Container>
<Properties>
<Property1>c</Property1>
<Property2>d</Property2>
</Properties>
</Container>
</Data>
</Result>
</Response>
</soap:Body>
</soap:Envelope>
Dim XMLdoc As XmlDocument = New XmlDocument()
XMLdoc.LoadXml(strXML)
Dim XMLContent As XmlNodeList
Dim nsMgr As New XmlNamespaceManager(XMLdoc.NameTable())
ns.AddNamespace("dflt", XMLdoc.DocumentElement.NamespaceURI)
ns.AddNamespace("ns1", XMLdoc.DocumentElement.GetNamespaceOfPrefix("soap"))
ns.AddNamespace("ns2", "http://namespacetwo")
ns.AddNamespace("ns3", "http://namespacethree")
ns.AddNamespace("ns4", "http://namespacefour")
ns.AddNamespace("ns5", "http://namespacefive")
ns.AddNamespace("ns6", "http://namespacesix")
'This returns content but not at the level I want
XMLContent = XMLdoc.SelectNodes("/ns1:Envelope/ns1:Body/ns4:Response/ns4:Result", nsMgr)
'This does not return anything
XMLContent = XMLdoc.SelectNodes("/ns1:Envelope/ns1:Body/ns4:Response/ns4:Result/ns5:Data", nsMgr)
If Not XMLContent Is Nothing Then
For Each node As XmlNode In XMLContent
'Create and populate table here
Next node
End If
はあなたの助けに感謝します。
XPATHを実行しているサンプル文書を投稿してください。また一般的な提案 - クエリをより一般的なものにして、異常なNSを気にしないようにしてください。 '//レスポンス/結果/データ ' – t1gor
@ t1gorのサンプル文書に対する要求に同意します。テキストとして追加する必要があります。***イメージではありません***。 – kjhughes
フェアポイントの人たち - イメージをXMLのコードサンプルに変更しました。より一般的なクエリを調査します。 –