ASP Classic - 解析XML InnerXML

时间:2012-04-29 19:50:25

标签: asp-classic

我希望能够解析像asp.net这样的值,不幸的是,asp经典也会像<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>
 %>

2 个答案:

答案 0 :(得分: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) 

%>

不幸的是,MSXML DOM元素没有innerXml属性。因此,您需要循环,例如,连接每个子节点的xml以生成元素的内部XML。

答案 1 :(得分:2)

这可以帮到你找到你想要的东西:

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

我不确定您的确切情况,但您可能希望在假设之前确保您有子节点,您可以使用:

CurrentXML.SelectSingleNode("/root/div").hasChildNodes ' Should be "True"
祝你好运!