我正在尝试用ASP读取XML文件(ASP中的绝对初学者)。
要打开的XML:
<?xml version="1.0" encoding="UTF-8"?>
<Reisen>
<Reise Reise-Nummer="5608" Status="Released">
<Pfad>Reisen/Europa/DE/Bayerischer_Wald/5608</Pfad>
<Informationen>
<Anforderung>1-2</Anforderung>
</Informationen>
<Reisedaten>
<Titel>Eine Reise durch den Bayrischen Wald</Titel>
</Reisedaten>
</Reise>
</Reisen>
ASP代码: (file_name包含xml的文件名)
Set objXMLDoc = Server.CreateObject("MSXML2.DOMDocument.3.0")
objXMLDoc.async = False
objXMLDoc.setProperty "ServerHTTPRequest", true
objXMLDoc.load Server.MapPath("/xml/single/" & file_name)
Dim xmlProduct
For Each xmlProduct In objXMLDoc.documentElement.selectNodes("Reisen")
Dim reise : reise = xmlProduct.selectSingleNode("Reise").Attributes.GetNamedItem("Reise-Nummer").Text
Response.Write Server.HTMLEncode(reise)
Next
如果我调用此脚本,我总是会收到错误500.错误放在foreach循环中... 有人可以告诉我如何解决它吗?
答案 0 :(得分:1)
我的理解是Reisen是里面有多个子Reise节点的根节点。在这种情况下,您不应该将selectNodes用于Reisen。我测试了以下内容,似乎工作正常:
Set objXMLDoc = Server.CreateObject("MSXML2.DOMDocument.3.0")
objXMLDoc.async = False
objXMLDoc.setProperty "ServerHTTPRequest", true
objXMLDoc.load Server.MapPath("/xml/single/" & file_name)
Set root = objXMLDoc.documentElement.selectSingleNode("/Reisen")
Dim xmlProduct
For Each xmlProduct In root.selectNodes("./Reise")
Dim reise : reise = xmlProduct.Attributes.GetNamedItem("Reise-Nummer").Text
Response.Write Server.HTMLEncode(reise)
Next
我尝试了多个没有root的Reisen元素,并且我得到了HTTP 500,因此可能是因为您的XML在导致错误的所有内容之后无效。