Chr*_*Kee 5 xml vbscript asp-classic
我有一个经典的ASP网站(VBSCRIPT)上无法完成的任务,需要循环解析以下信息。
<xml>
<product ref="xxx">
<xxx/>
<xxx/>
<xxx/>
<images>
<image ref="JCCCCCC" />
<image ref="JCCCCCD" />
</images>
</product>
<product ref="xxx">
<xxx/>
<xxx/>
<xxx/>
<images>
<image ref="JCCCCCC" />
<image ref="JCCCCCD" />
</images>
</product>
</xml>
Run Code Online (Sandbox Code Playgroud)
我正在尝试获取产品参考,然后获取图像(第四个主节点向下)
我已经对此感到迷恋了一段时间,并且在两年多的时间里没有使用ASP之后一直处于大脑阻塞的状态。
<%
Set objXML = Server.CreateObject("Microsoft.XMLDOM")
Set objLst = Server.CreateObject("Microsoft.XMLDOM")
Set objHdl = Server.CreateObject("Microsoft.XMLDOM")
objXML.async = False
objXML.Load (Server.MapPath("\") & "\xmlupdate\product.xml")
If objXML.parseError.errorCode <> 0 Then
'handle the error
End If
Set objLst = objXML.getElementsByTagName("Product")
SizeofObject = objLst.length-1
response.Write(SizeofObject&"<br><br>")
For i = 0 To (SizeofObject-1)
Set objHnd = objLst.item(i)
Response.Write(objHdl.childNodes(0).text)
Next
%>
Run Code Online (Sandbox Code Playgroud)
在我不介意使用ASP之前,任何帮助都会非常有用
---附加-
使用此功能可提供完整的输出,因为我希望它似乎无法抓住其节点属性。
<%
Set objLst = objXML.getElementsByTagName("Product")
SizeofObject = objLst.length-1
response.Write(SizeofObject&"<br><br>")
For each elem in objLst
set childNodes = elem.childNodes
for each node in childNodes
Response.Write node.nodeName & " = " & node.text & "<br />" & vbCrLf
next
Response.Write "<hr>" & vbCrLf
Next
%>
Run Code Online (Sandbox Code Playgroud)
<%
Set objLst = objXML.getElementsByTagName("Product")
SizeofObject = objLst.length-1
response.Write(SizeofObject&"<br><br>")
For each elem in objLst
set childNodes = elem.childNodes
for each node in childNodes
Response.Write node.nodeName & " = " & node.text & "<br />" & vbCrLf
If lcase(node.nodeName)="images" then
Response.Write("<B>Images Hit</B></br>")
set xattchildnodes = node.childNodes
For Each attchildnodes in xattchildnodes
For Each att in attchildnodes.Attributes
Response.Write att.Name & " = " & att.text & "<br />" & vbCrLf
Next
Next
End If
next
Response.Write "<hr>" & vbCrLf
Next
%>
Run Code Online (Sandbox Code Playgroud)
<%
Set objXML = Server.CreateObject("Microsoft.XMLDOM")
objXML.Load (Server.MapPath("\") & "\Product.xml")
'etc'
Dim nodes
set nodes = objXML.selectNodes("//xml/Product")
Dim images
For each node in nodes
Response.Write("<ul>")
Response.Write("<li>Ref: " & node.getAttribute("ref") & "</li>")
Set images = node.selectNodes("Images/Image")
For each image in images
Response.Write( "<li>Image:"& image.getAttribute("ref") &"</li>" )
Next
Response.Write( "</ul>" )
Next
%>
Run Code Online (Sandbox Code Playgroud)
安东尼·琼斯(Anthony Jones)指出,最好具体一点,以便您可能需要更改
Set objXML = Server.CreateObject("Microsoft.XMLDOM")
Run Code Online (Sandbox Code Playgroud)
至
Set objXML = Server.CreateObject("MSXML2.DOMDocument.3.0")
Run Code Online (Sandbox Code Playgroud)
仍然适用于最终代码。
是的,有时必须使用经典ASP才能使我回到石器时代……我感到您很痛苦!
IIRC,在第二个代码段中,您只需添加:
for each node in childNodes
Response.Write node.nodeName & " = " & node.text & "<br />" & vbCrLf
'***Add the following:
For Each att in node.Attributes
Response.Write att.Name & " = " & att.text & "<br />" & vbCrLf
Next
next
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
33402 次 |
| 最近记录: |