嗨,我有这个asp经典应用程序,我正在尝试检索单个节点,但我不断收到Object Required错误。 selectNodeBytags工作但返回一个节点列表我只想要一个节点。
“需要对象”的错误
<%
option explicit
Dim xmlDoc
Set xmlDoc = CreateObject("Msxml2.DOMDocument")
xmlDoc.async = False
Dim node
If xmlDoc.load(Server.MapPath("vocabulary.xml")) Then
xmlDoc.setProperty "SelectionLanguage", "XPath"
set node = xmlDoc.selectSingleNode("Word[@type='noun']")
Response.write node.text
end if
%>
这可以使用getElementsByTagName
<%
option explicit
Dim xmlDoc
Set xmlDoc = CreateObject("Msxml2.DOMDocument")
xmlDoc.async = False
Dim node
If xmlDoc.load(Server.MapPath("vocabulary.xml")) Then
xmlDoc.setProperty "SelectionLanguage", "XPath"
' Grabs the elements in each "word" element
Dim nodelist
Set nodelist = xmlDoc.getElementsByTagName("Word")
for each node in nodelist
Response.write(node.nodeName) & "<br />" 'Returns parent node name
Response.write(node.text) & "<br />"
next
end if
%>
我正在使用的xml文件
<?xml version="1.0" encoding="utf-8" ?>
<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>
答案 0 :(得分:4)
尝试: -
set node = xmlDoc.selectSingleNode("/Vocabulary/Word[@type='noun']")
默认情况下,XPath仅选择与其正在执行的节点的直接childern的元素。文档本身是一个节点,并且只有一个元素子元素(在本例中是“词汇表”节点)。因此,您需要一个“路径”来首先选择顶部节点,然后选择下面的所需节点。在这种情况下,以下是等效的: -
set node = xmlDoc.documentElement.selectSingelNode("Word[@type='noun']")