这5种特殊号相对应的转意字符见如下:
< < 小于号
> > 大于号
& & 和
' ' 单引号
" " 双引号
在网上查到的也是这5种。
但我用VBA中的Microsoft XML, 6.0读取XML字串时出现一个问题。
就是当某节点中的内容存在逗号的时候(< NODE_NAME> abc,xyz</NODE_NAME),调用“DOMDocument.LoadXML()”函数时返回的是False。
如果XML中没有逗号的时候就没有上述问题。(< NODE_NAME> abcxyz</NODE_NAME)
请问有谁遇到过这种情况,有无好的解决方案?
8 个解决方案
#1
刚看到帖子时就感觉是你粗心大意,看你发的代码,一是多了个空格,二是少了个>号的。
进一步写下面的代码测试,返回也是true
进一步写下面的代码测试,返回也是true
Option Explicit
Private Sub Form_Load()
TestXml
End Sub
Private Sub TestXml()
Dim xmldom As New MSXML2.DOMDocument
Dim bRlt As Boolean
bRlt = xmldom.loadXML("<NODE_NAME>abc,xyz</NODE_NAME>")
Debug.Print bRlt
End Sub
#2
bcrun 不错!
#3
不好意思,贴子中的内容是我在WORD中写好了粘过来的。写的时候比较着急,贴子中的XML确实写错了。
谢谢提醒。
忽略贴子中多一个空格和少一个符号的问题后,关于逗号的这种情况确实存在。
比如,XML是放在一个文件中的,在代码中读取这个文件,当节点的内容中没有逗号的时候是可以的,没有任何问题。
在XML文件中节点内容的基础上添加一个半角的逗号,而且代码不变的情况下,LoadXML就会返回False。
下面是XML文件中的内容:
<RESULT><NODE_NAME>kkk</NODE_NAME></RESULT>
上面的文件可以成功读取。
如果在kkk基础上加一个半角逗号,或直接将kkk改为一个半角逗号时,就会失败。
还有,我是用的EXCEL2007的VBA。
在VBA中使用的是Microsoft XML,3.0。
后来将Microsoft XML,3.0改为Microsoft XML,6.0后,也有这样的问题。
#4
还有,系统是Windows7
#5
我在 Office 2007 / VBA 中, 参照 bcrun 的代码,
MSXML2.DOMDocument、MSXML2.DOMDocument26、MSXML2.DOMDocument30、MSXML2.DOMDocument40、
MSXML2.DOMDocument50、MSXML2.DOMDocument60
都试过,全部是返回 True 呢。
只是我的系统是 WinXP/SP3 ,没有 Win7来测试。
MSXML2.DOMDocument、MSXML2.DOMDocument26、MSXML2.DOMDocument30、MSXML2.DOMDocument40、
MSXML2.DOMDocument50、MSXML2.DOMDocument60
都试过,全部是返回 True 呢。
只是我的系统是 WinXP/SP3 ,没有 Win7来测试。
#6
唉,楼主你还是自己检查一下哪里搞错了吧。老是说有问题又拿不出实打实的测试用例。
如果不是你真的哪里看花了,那我只能怀疑你的系统出毛病了:)
如果不是你真的哪里看花了,那我只能怀疑你的系统出毛病了:)
#7
bcrun 用的是 Win7 吗?
楼主说他的是Win7 ,运行有问题。
如果你有Win7系统,就说下你在Win7中的结果吧。
楼主说他的是Win7 ,运行有问题。
如果你有Win7系统,就说下你在Win7中的结果吧。
#8
我用的是WIN7 32bit,不过他已经结帖给分了,应该是想通了吧:)
#1
刚看到帖子时就感觉是你粗心大意,看你发的代码,一是多了个空格,二是少了个>号的。
进一步写下面的代码测试,返回也是true
进一步写下面的代码测试,返回也是true
Option Explicit
Private Sub Form_Load()
TestXml
End Sub
Private Sub TestXml()
Dim xmldom As New MSXML2.DOMDocument
Dim bRlt As Boolean
bRlt = xmldom.loadXML("<NODE_NAME>abc,xyz</NODE_NAME>")
Debug.Print bRlt
End Sub
#2
bcrun 不错!
#3
不好意思,贴子中的内容是我在WORD中写好了粘过来的。写的时候比较着急,贴子中的XML确实写错了。
谢谢提醒。
忽略贴子中多一个空格和少一个符号的问题后,关于逗号的这种情况确实存在。
比如,XML是放在一个文件中的,在代码中读取这个文件,当节点的内容中没有逗号的时候是可以的,没有任何问题。
在XML文件中节点内容的基础上添加一个半角的逗号,而且代码不变的情况下,LoadXML就会返回False。
下面是XML文件中的内容:
<RESULT><NODE_NAME>kkk</NODE_NAME></RESULT>
上面的文件可以成功读取。
如果在kkk基础上加一个半角逗号,或直接将kkk改为一个半角逗号时,就会失败。
还有,我是用的EXCEL2007的VBA。
在VBA中使用的是Microsoft XML,3.0。
后来将Microsoft XML,3.0改为Microsoft XML,6.0后,也有这样的问题。
#4
还有,系统是Windows7
#5
我在 Office 2007 / VBA 中, 参照 bcrun 的代码,
MSXML2.DOMDocument、MSXML2.DOMDocument26、MSXML2.DOMDocument30、MSXML2.DOMDocument40、
MSXML2.DOMDocument50、MSXML2.DOMDocument60
都试过,全部是返回 True 呢。
只是我的系统是 WinXP/SP3 ,没有 Win7来测试。
MSXML2.DOMDocument、MSXML2.DOMDocument26、MSXML2.DOMDocument30、MSXML2.DOMDocument40、
MSXML2.DOMDocument50、MSXML2.DOMDocument60
都试过,全部是返回 True 呢。
只是我的系统是 WinXP/SP3 ,没有 Win7来测试。
#6
唉,楼主你还是自己检查一下哪里搞错了吧。老是说有问题又拿不出实打实的测试用例。
如果不是你真的哪里看花了,那我只能怀疑你的系统出毛病了:)
如果不是你真的哪里看花了,那我只能怀疑你的系统出毛病了:)
#7
bcrun 用的是 Win7 吗?
楼主说他的是Win7 ,运行有问题。
如果你有Win7系统,就说下你在Win7中的结果吧。
楼主说他的是Win7 ,运行有问题。
如果你有Win7系统,就说下你在Win7中的结果吧。
#8
我用的是WIN7 32bit,不过他已经结帖给分了,应该是想通了吧:)