xmldom 使用问题

jett 2002-04-02 06:13:24
Dim XmlEle As IXMLDOMElement
Dim XmlEleList As IXMLDOMNodeList
如果这样写
strxml="<employee><name>aaa</name></employee>"

XmlDoc.loadXML strXml
Set XmlEleList = XmlDoc.getElementsByTagName("name")
For Each XmlEle In XmlEleList
next

运行正常

但如果这样写
strxml="<employee>" +vbcrlf+ "<name>aaa</name>" +vbcrlf+ "</employee>"
XmlDoc.loadXML strXml
Set XmlEleList = XmlDoc.getElementsByTagName("name")
For Each XmlEle In XmlEleList '在这里报错,类型不匹配.xmlele必须是ixmldomnode才行
next

这是为什么,我用的是msxml4.0
...全文
38 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
karma 2002-04-03
  • 打赏
  • 举报
回复
weird, this works for me in VB6:

Dim XmlDoc As New MSXML2.DOMDocument40
Dim XmlEle As IXMLDOMElement
Dim XmlEleList As IXMLDOMNodeList
strXml = "<employee><name>aaa</name></employee>"

XmlDoc.loadXML strXml
Set XmlEleList = XmlDoc.getElementsByTagName("name")
For Each XmlEle In XmlEleList
MsgBox XmlEle.Text
Next

strXml = "<employee>" + vbCrLf + "<name>aaa</name>" + vbCrLf + "</employee>"
XmlDoc.loadXML strXml
Set XmlEleList = XmlDoc.getElementsByTagName("name")
For Each XmlEle In XmlEleList
MsgBox XmlEle.Text
Next
Tony__Hu 2002-04-03
  • 打赏
  • 举报
回复
对于第二点不敢肯定,我再去查查资料,你有什么发现请也告诉我
Tony__Hu 2002-04-03
  • 打赏
  • 举报
回复
对于第二点,我还要再查查资料看。你有什么发现请告诉我。
Tony__Hu 2002-04-03
  • 打赏
  • 举报
回复
1. 建议使用这样的循环,这样的效率比较高。
Set XmlEleList = xmlDoc.getElementsByTagName("name")
Dim Counts
Counts = XmlEleList .length - 1
For i = 0 To Counts
MsgBox (XmlEleList .Item(i).xml)
Next

2. 用getElementsByTagName得到是节点的数组,不是元素的数组。
IXMLDOMElement 是元素 和 ixmldomnode 是节点,两者有区别。
jett 2002-04-03
  • 打赏
  • 举报
回复
去掉vbCrLf或是xmlele声明成IXMLDOMNode则不会报错
jett 2002-04-03
  • 打赏
  • 举报
回复
不好意思,忘了说了,我还加了个属性xml:space='preserve'
Dim XmlDoc As New DOMDocument40
Dim xmlele As IXMLDOMElement
Dim xmlnode As IXMLDOMNode
Dim xmlstr As String
xmlstr = "<try xml:space='preserve'>" + vbCrLf + "<tryele/>" + vbCrLf + "</try>"
XmlDoc.loadXML xmlstr
For Each xmlele In XmlDoc.documentElement.childNodes
Debug.Print xmlele.xml
Next
' For Each xmlnode In XmlDoc.documentElement.childNodes
' Debug.Print xmlnode.xml
' Next
jett 2002-04-02
  • 打赏
  • 举报
回复
那为什么第二句如果XmlEle 换成是ixmldomnode对象则可以呢?
mirrorsite 2002-04-02
  • 打赏
  • 举报
回复
第二种增加了换行回车标记后,XmlDoc.getElementsByTagName("name")
并不能处理这些非XML标记

因此,通常我们交给解析器的XML文档最好是没有加这些多余的标记。
只是为了在编辑器中,或者清晰的描述结构,才加入了换行回车符
Earthdog 2002-04-02
  • 打赏
  • 举报
回复
我试了你的程序代码,没有任何错误啊!

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧