用 ASP 打开一个 XML

Open a XML with ASP

我正在尝试用 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 循环中... 有人可以告诉我如何解决吗?

我的理解是Reisen是根节点,里面有多个Reise子节点。在那种情况下,您不应该为 Reisen 使用 selectNodes。我测试了以下内容,似乎工作正常:

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

我尝试了多个没有根的 Reisen 元素,但我得到了 HTTP 500,所以可能是你的 XML 无效导致了错误。