使用ASP

时间:2015-07-10 08:22:21

标签: xml vbscript asp-classic iis-7

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

1 个答案:

答案 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在导致错误的所有内容之后无效。