2017-08-08 28 views

答えて

1

実際には、テキストプロパティは、CDATAのエスケープ文字である<![CDATA[]]>を解決します。したがって、実際にはコードは非常にシンプルです。ここに例があります。

Sub Test() 

    Dim sXml As String 
    sXml = "<Root><SomeData>foo</SomeData>" & _ 
     "<SomeCDATA><![CDATA[<img src=""http://l.yimg.com/a/i/us/we/52/26.gif""/>]]>" & _ 
     "</SomeCDATA></Root>" 
    'Tools->References->Microsoft Xml v.60 
    Dim dom As MSXML2.DOMDocument60 
    Set dom = New MSXML2.DOMDocument60 
    dom.LoadXML sXml 
    Debug.Assert dom.parseError = 0 

    Dim xmlSomeCData As MSXML2.IXMLDOMElement 
    Set xmlSomeCData = dom.SelectSingleNode("Root/SomeCDATA") 

    Debug.Print xmlSomeCData.Text 

    '* or your suggestion :) 
    Dim xmlSomeCDataSection As MSXML2.IXMLDOMCDATASection 
    Set xmlSomeCDataSection = dom.SelectSingleNode("Root/SomeCDATA/text()") 

    Debug.Print xmlSomeCDataSection.Text 

End Sub 

上記のコードの出力<img src="http://l.yimg.com/a/i/us/we/52/26.gif"/>

+0

'''Tools-> References->マイクロソフトのXml v.60''は何をしますか? – Aqqqq

+0

Mirosoft Xmlライブラリにツールリファレンスを追加する必要があるとのコメントにすぎません。それ以外の場合、コードはコンパイルされません。だから、IDEで、上のメニューバーに移動し、ツールを取ってからサブメニューから参照を取得し、Microsoft Xml v6.0が見つかるまでスクロールダウンするダイアログボックスから参照して、その横のチェックボックスをオンにします。 –

+0

コンパイルエラーが発生しました:ユーザー定義型が定義されていません。 (コメントを追加した後) – Aqqqq

関連する問題