2016-04-18 18 views
0

私はhereとテストされたXPathクエリ//*[local-name()='Home Query Data']を持っています。 今、このXPathを実行して、<Home Query Data> --- </Home Query Data>タグ内のすべてのテキストを返す必要があります。タグ内のテキストを取得するXML DOM

タグ内からテキスト全体を選択するにはどのDOMセレクタを使用しますか? ように:objMSXML.selectNodes(XPath)

編集

私はプログラミングのためのVBScriptを使用しています。私のコードは以下の通りです:

Sub ReadXml(FileName) 
    Dim nodeinfo (4) 
    Dim sXPath 
    Set fso = CreateObject("Scripting.FileSystemObject") 
    Set fileObj = fso.GetFile(FileName) 
    objMSXML.async = True 
    objMSXML.load FileName 

    If 0 = objMSXML.parseError Then 
    sXPath = "//*[local-name()='Home Query Data']" 
    End If 
    Dim querySubject : Set querySubject = objMSXML.selectSingleNode(sXPath) 
    If querySubject Is Nothing Then 
    MsgBox sXPath, "failed" ** Error type mismatch [string "failed"]** 
    Else 
    For Each node In objMSXML.selectNodes(sXPath) 
     MsgBox node 
    Next 
    End If 
End Sub 

私はそれを他の投稿用にコピーしましたが、XMLタグ内のテキスト全体を返す方法を見つけることができませんでした。

Dim querySubject : Set querySubject = objMSXML.selectSingleNode(sXPath) 
If querySubject Is Nothing Then 
    MsgBox sXPath, "failed" 
Else 
    For Each node In objMSXML.selectNodes(sXPath) 
    MsgBox node 
    Next 
End If 

EDIT2

私の実用的なXMLのようなものです::

<?xml version="1.0" encoding="UTF-8"?> 
<breakfast_menu> 
<food> 
    <name locale="en">Stage Query Data</name> 
    <price>$5.95</price> 
    <description>Our famous Belgian Waffles with plenty of real maple syrup</description> 
    <calories>650</calories> 
</food> 
<drink> 
    <name locale="en">Home Query Data</name> 
    <price>$4.50</price> 
    <description>Thick slices made from our homemade sourdough bread</description> 
    <calories>600</calories> 
</drink> 
<mix> 
    <name locale="en">Report Query Data</name> 
    <price>$6.95</price> 
    <description>Two eggs, bacon or sausage, toast, and our ever-popular hash browns</description> 
    <calories>950</calories> 
</mix> 
</breakfast_menu> 

が、私はその名前であるタグ<drink>内のテキストをキャプチャする必要が

私はこの部分で問題を抱えていますHome Query Data

<name locale="en">Home Query Data</name> 
     <price>$4.50</price> 
     <description>Thick slices made from our homemade sourdough bread</description> 
     <calories>600</calories> 

現在、私がメッセージボックスsXPathで取得しています、「失敗した」**エラー型の不一致[文字列「失敗」] **

+0

あなたは 'node.text'を試してみましたか? https://msdn.microsoft.com/en-us/library/ms763798.aspx –

+0

xpathの問題。タイプミスマッチsxpath .... –

+0

完全なエラーメッセージを表示してください。また、XMLデータの代表的な(作業中の)サンプルを表示します。 –

答えて

1

あなたはtext()属性セレクタ、ないlocal-name()機能を使用する必要があります。後者はその内容ではなくノードの名前を取得します。

また、MsgBoxの呼び出しは無効です。https://msdn.microsoft.com/en-us/library/sfw6660x%28v=vs.84%29.aspxを参照してください。予想通り

次作品:

Sub ReadXML(FileName) 
    Dim sXPath 
    Set objMSXML = CreateObject("Msxml2.DOMDocument.6.0") 
    objMSXML.load FileName 

    If objMSXML.parseError = 0 Then 
    sXPath = "//*[name/text()='Home Query Data']" 
    Dim querySubject : Set querySubject = objMSXML.selectSingleNode(sXPath) 
    If querySubject Is Nothing Then 
     MsgBox sXPath, 0, "failed" 
    Else 
     For Each node In objMSXML.selectNodes(sXPath) 
     MsgBox node.text 
     Next 
    End If 
    Else 
    MsgBox objMSXML.parseError 
    End If 
End Sub 
+0

'objMSXML.selectSingleNode(sXPath)'が間違っています。ノードを返しません。 –

+0

'selectSingleNode(sXPath)'以外の方法が必要です –

関連する問題