2011-08-30 83 views
2

here: XML:如何使用vbscript和经典asp在xml中选择SingleNode?

<Vocabulary> 
    <Word type="noun" level="1"> 
     <English>cat</English> 
     <Spanish>gato</Spanish> 
    </Word> 
    <Word type="verb" level="1"> 
     <English>speak</English> 
     <Spanish>hablar</Spanish> 
    </Word> 
    <Word type="adj" level="1"> 
     <English>big</English> 
     <Spanish>grande</Spanish> 
    </Word> 
</Vocabulary> 

我创建的XML文件把它放在同一个目录中经典的asp文件:

<% 

    Set objXMLDoc = CreateObject("Microsoft.XMLDOM") 
    objXMLDoc.async = False 
    objXMLDoc.load("vocabulary.xml") 

    Set Node = objXMLDoc.documentElement.selectSingleNode("Word/Spanish") 
    document.write(Node.text) 

%> 

但我得到这个:

微软的VBScript运行时错误“800a01a8”

所需对象:'objXMLDoc.documentElement'

/so-rms/reports/xmltest.asp,7号线

我在做什么错?他们得到的元素。我收到错误。谢谢。

编辑:我把这个在:

If objXMLDoc.parseError.errorCode <> 0 Then 
    response.write objXMLDoc.parseError.errorCode & "ERROR CODE </br>" 
    response.write objXMLDoc.parseError.reason & "REASON CODE </br>" 
    response.write objXMLDoc.parseError.line & "LINE CODE </br>" 
End If 

,并得到:

-2146697210ERROR CODE

系统错误:-2146697210。原因码

0LINE CODE 从下面的尝试:

dim path: path = Server.MapPath("vocabulary.xml") 
dim fso: set fso = CreateObject("Scripting.FileSystemObject") 
if not fso.FileExists(path) then 
    Response.Write "path '" & path & "' not found" 
end if 
Set objXMLDoc = CreateObject("MSXML2.DOMDocument.3.0") 
objXMLDoc.async = False 

if not objXMLDoc.load("vocabulary.xml") then 
    ' report loading error 
    response.write "error" 
end if 
'objXMLDoc.load("vocabulary.xml") 
If objXMLDoc.parseError.errorCode <> 0 Then 
    response.write objXMLDoc.parseError.errorCode & "ERROR CODE </br>" 
    response.write objXMLDoc.parseError.reason & "REASON CODE </br>" 
    response.write objXMLDoc.parseError.line & "LINE CODE </br>" 
End If 
Set Node = objXMLDoc.documentElement.selectSingleNode("Word/Spanish") 
document.write(Node.text) 

编辑:

我也改变了xml文件工作XML返回的URL(Bing地图)和它的工作。所以我猜这是文件。谢谢。

+0

你试过'objXMLDoc.load(路径)',其中'path'是调用'MapPath()'的结果? – 2011-08-30 18:22:08

回答

4

我认为你的xml文档没有加载。该load()方法返回一个bool指示文件是否已正确加载,所以你可以检查

if not objXMLDoc.load("vocabulary.xml") then 
    ' report loading error 
end if 

parseError也酒店有srcText属性,你可以用它来确定在何处解析问题发生的文件中。

检查文件是否存在于您正在使用的路径中也是一个好主意。使用Server.MapPath()Scripting.FileSystemObject做到这一点:

dim path: path = Server.MapPath("vocabulary.xml") 
dim fso: set fso = CreateObject("Scripting.FileSystemObject") 
if not fso.FileExists(path) then 
    Response.Write "path '" & path & "' not found" 
end if 

此外,我建议使用XML库的更新版本,MSXML2.DomDocument

+0

我加了这一切,但得到了同样的错误。看上面的更新。 – johnny

+0

不确定。我试过这个:'xmldoc。loadXML的(” 加托说话 hablar big grande“)'并且XML加载正确,所以XML本身就OK – 2011-08-30 15:43:26