Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用经典ASP.XML选择节点_Xml_Asp Classic - Fatal编程技术网

使用经典ASP.XML选择节点

使用经典ASP.XML选择节点,xml,asp-classic,Xml,Asp Classic,让我困惑的XML问题,但可能非常简单 XML类似于: <header> <createdOn>16 Sep 2009</createdOn> <createdBy>Jez</createdBy> </header> <agents> <agent> <agentDetails> <agen

让我困惑的XML问题,但可能非常简单

XML类似于:

    <header>
    <createdOn>16 Sep 2009</createdOn>
    <createdBy>Jez</createdBy>
</header>
<agents>
    <agent>
            <agentDetails>
                    <agentName>text</agentName>
                    <agentTelephone>text</agentTelephone>
            </agentDetails>
            <properties>
                    <property>
                            <propertyid>number</propertyid>
                            <address>
                                    <number>1</number>
                                    <street>High St</street>
                                    <postcode></postcode>
                                    <country>UK</country>
                            </address>
                            <price>
                                    <category>text</category>
                                    <price>number</price>
                                    <reference>text</reference>
                            </price>
                            <description>
                                    <propertyType>House</propertyType>
                                    <bedrooms>2</bedrooms>
                                    <bathrooms>1</bathrooms>
                                    <sleeps>
                                    <briefDescription>text</briefDescription>
                                    <addDescription>long-text</addDescription>
                                    <floorSize>
                                            <size>80</size>
                                            <type>sq. mt</type>
                                    </floorSize>
                                    <bullets>
                                            <bullet>No Of Bedrooms : 2</bullet>
                                            <bullet>Condition : Habitable</bullet>
                                            <bullet>Land Size (M2): 2,000</bullet>
                                    </bullets>
                            </description>
                            <images>
                                    <image>
                                            <thumbnail>URL</thumbnail>
                                            <image>URL</image>
                                            <alttext></alttext>
                                    </image>
                                    <image>
                                            <thumbnail>URL</thumbnail>
                                            <image>URL</image>
                                            <alttext></alttext>
                                    </image>
                            </images>
                            <links>
                                    <link>
                                            <type>text</type>
                                            <url>url</url>
                                    </link>
                                    <link>
                                            <type>text</type>
                                            <url>url</url>
                                    </link>
                            </links>
                    </property>
            </properties>
    </agent>
 </agents>

2009年9月16日
杰兹
文本
文本
数字
1.
高街
英国
文本
数字
文本
房屋
2.
1.
文本
长文本
80
平方米
卧室数量:2间
条件:可居住
土地面积(平方米):2000
统一资源定位地址
统一资源定位地址
统一资源定位地址
统一资源定位地址
文本
网址
文本
网址
我想使用的代码是:

    Set NodeList = objXML.documentElement.selectNodes("agents/agent/properties/property")
For Each Node In NodeList
    'I want to be able to extract distinct fields here...
    response.write Node.selectSingleNode("address/street") & "<br/>"
    response.write Node.selectSingleNode("description/briefDescription") & "<br/>"
Next
Set NodeList=objXML.documentElement.selectNodes(“代理/代理/属性/属性”)
对于节点列表中的每个节点
'我希望能够在这里提取不同的字段。。。
response.write Node.选择singlenode(“地址/街道”)和“
” response.write Node.选择SingleNode(“描述/简要描述”)和“
” 下一个
但是,我不知道怎么做

此外,这可能是
标记的问题


请提供建议?

首先,您发布的XML示例无效。它缺少根元素(或者有多个根元素,具体取决于您的观点)。此外,
元素从不关闭。我想在你的例子中这些可能是打字错误

我不知道你所说的“我想在这里提取不同的字段”是什么意思。你能举一个你想要的输出的例子吗

在没有更多信息的情况下,我可以建议尝试以下方法:

Dim NodeList, Node, SubNode
'' # Note: Replace [root] with your actual root level element
Set NodeList = objXML.documentElement.selectNodes("/[root]/agents/agent/properties/property")
For Each Node In NodeList
    '' # Do something useful... ?? Distinct fields??
    Set Node = Node.selectSingleNode("address/street/text()")
    If Not Node Is Nothing Then
        Response.Write Server.HTMLEncode(Node.nodeValue) & "<br />"
    End If
Next
Dim节点列表、节点、子节点
''#注意:用实际的根级别元素替换[root]
Set NodeList=objXML.documentElement.selectNodes(“/[root]/agents/agent/properties/property”)
对于节点列表中的每个节点
''做点有用的事??不同字段??
设置Node=Node。选择SingleNode(“地址/街道/文本()”)
如果不是,则节点为空
Response.Write Server.HTMLEncode(Node.nodeValue)和“
” 如果结束 下一个
这有帮助吗?

我使用的代码是:

Set NodeList = objXML.documentElement.selectNodes("agents/agent/properties/property")
For Each Node In NodeList
    Set AddrNode = Node.selectSingleNode("address/street/text()")
    if not AddrNode Is Nothing then response.write AddrNode.nodeValue & "<br/>"
    set AddrNode = nothing

    Set AddrNode = Node.selectSingleNode("address/region/text()")
    if not AddrNode Is Nothing then response.write AddrNode.nodeValue & "<br/>"
    set AddrNode = nothing

    For Each ImgNode In Node.selectNodes("images/image")
        Set ThNode = ImgNode.selectSingleNode("thumbnail/text()")
        if not ThNode Is Nothing then response.write ThNode.nodeValue & "<br/>"
        set ThNode = nothing
        Set ThNode = ImgNode.selectSingleNode("image/text()")
        if not ThNode Is Nothing then response.write ThNode.nodeValue & "<br/>"
        set ThNode = nothing
        Set ThNode = ImgNode.selectSingleNode("alttext/text()")
        if not ThNode Is Nothing then response.write ThNode.nodeValue & "<br/>"
        set ThNode = nothing
    next
Next
Set NodeList=objXML.documentElement.selectNodes(“代理/代理/属性/属性”)
对于节点列表中的每个节点
设置AddrNode=Node。选择SingleNode(“地址/街道/文本()”)
如果不是AddrNode,则response.write AddrNode.nodeValue&“
” set AddrNode=nothing 设置AddrNode=Node。选择SingleNode(“地址/区域/文本()”) 如果不是AddrNode,则response.write AddrNode.nodeValue&“
” set AddrNode=nothing 对于节点中的每个ImgNode。选择节点(“图像/图像”) 设置ThNode=ImgNode。选择SingleNode(“缩略图/文本()”) 如果不是ThNode,则response.write ThNode.nodeValue&“
” 设置ThNode=nothing 设置ThNode=ImgNode。选择singlenode(“image/text()”) 如果不是ThNode,则response.write ThNode.nodeValue&“
” 设置ThNode=nothing 设置ThNode=ImgNode。选择singlenode(“alttext/text()”) 如果不是ThNode,则response.write ThNode.nodeValue&“
” 设置ThNode=nothing 下一个 下一个

我希望其他人发现它有用

太棒了,克里斯!这是引用节点的方式,我犯了很大的错误——您的示例代码起到了帮助。非常感谢。(顺便说一句,是的,示例中是打字错误。文档确实有根,但为此简化了。)+1。不只是因为它是正确的,而是因为它使用Server.HTMLEncode,如果我每次有一分钱都是从代码中看到的。@ Jez:你可以考虑使用XSLT来完成这类任务。使用XML并输出HTML是其擅长之处。需要一点头脑清醒,但是生成的代码比等效的VBScript代码更干净、速度更快。我同意Anthony的观点-我过去成功地使用过XSLT,但在本例中,我不想显示信息,我想要XML模式。我正在尝试创建一个函数来将任何XML文件映射到SQL字段。谢谢目前正在使用经典ASP来使用来自Amazon Web服务的数据。具体来说,就是产品搜索。