使用经典ASP.XML选择节点
让我困惑的XML问题,但可能非常简单 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
<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服务的数据。具体来说,就是产品搜索。