3

asp.netのように値を解析できるようにしたいのですが、残念ながらaspclassicもタグのように<div>everything within it</div>タグを返します。

パス「/root/ div」を解析して、「<div></div>」を除くその中のすべてを返そうとしています。結果は「<p>abc <span>other span</span></p>」になります。

<%
    Set CurrentXML=Server.CreateObject("Microsoft.XMLDOM")
    CurrentXML.LoadXml("<root><div><p>abc <span>other span</span></p></div></root>")'Load string into CurrentXML

    Response.Write("<BR>"&Server.HTMLEncode(CurrentXML.SelectSingleNode("/root/div").XML)) 'I want to return  without the div, the correct result should be <p>abc <span>other span</span></p>
 %>
4

2 に答える 2

2

これを試して:

<%
Option Explicit

    Dim xml: Set xml = Server.CreateObject("MSXML2.DOMDocument.3.0") 
    xml.LoadXml("<root><div>Text Start<p>abc <span>other span</span></p></div></root>")

    Dim sResult: sResult = ""

    Dim node
    For Each node in xml.selectSingleNode("/root/div").childNodes
        sResult = sResult & node.xml
    Next

    Response.Write Server.HTMLEncode(sResult) 

%>

残念ながら、MSXMLDOM要素にはinnerXmlプロパティがありません。したがって、要素の内部XMLを生成するために、各子ノードのxmlを連結するために例示されているようにループする必要があります。

于 2012-04-29T20:55:03.290 に答える
2

これにより、探しているものが得られるはずです。

Response.Write("BR>"&Server.HTMLEncode(CurrentXML.SelectSingleNode("/root/div").childNodes.item(0).XML))

正確なケースについてはわかりませんが、想定する前に子ノードがあることを確認することをお勧めします。次の方法で実行できます。

CurrentXML.SelectSingleNode("/root/div").hasChildNodes ' Should be "True"

幸運を!

于 2012-04-29T20:57:48.067 に答える