关于XML中的特殊符号

时间:2022-11-02 12:59:17
我知道XML中的特殊符号只有5种,<、>、&、’和”。
这5种特殊号相对应的转意字符见如下:
&lt;        <        小于号
&gt;        >        大于号
&amp;       &        和
&apos;      '        单引号
&quot;      "        双引号
在网上查到的也是这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
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 不错!
关于XML中的特殊符号

#3


引用 1 楼 bcrun 的回复:
刚看到帖子时就感觉是你粗心大意,看你发的代码,一是多了个空格,二是少了个>号的。
进一步写下面的代码测试,返回也是true
[/code]

不好意思,贴子中的内容是我在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来测试。

#6


唉,楼主你还是自己检查一下哪里搞错了吧。老是说有问题又拿不出实打实的测试用例。 关于XML中的特殊符号

如果不是你真的哪里看花了,那我只能怀疑你的系统出毛病了:)

#7


bcrun 用的是 Win7 吗?

楼主说他的是Win7 ,运行有问题。
如果你有Win7系统,就说下你在Win7中的结果吧。
关于XML中的特殊符号

#8


我用的是WIN7 32bit,不过他已经结帖给分了,应该是想通了吧:)

#1


刚看到帖子时就感觉是你粗心大意,看你发的代码,一是多了个空格,二是少了个>号的。
进一步写下面的代码测试,返回也是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 不错!
关于XML中的特殊符号

#3


引用 1 楼 bcrun 的回复:
刚看到帖子时就感觉是你粗心大意,看你发的代码,一是多了个空格,二是少了个>号的。
进一步写下面的代码测试,返回也是true
[/code]

不好意思,贴子中的内容是我在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来测试。

#6


唉,楼主你还是自己检查一下哪里搞错了吧。老是说有问题又拿不出实打实的测试用例。 关于XML中的特殊符号

如果不是你真的哪里看花了,那我只能怀疑你的系统出毛病了:)

#7


bcrun 用的是 Win7 吗?

楼主说他的是Win7 ,运行有问题。
如果你有Win7系统,就说下你在Win7中的结果吧。
关于XML中的特殊符号

#8


我用的是WIN7 32bit,不过他已经结帖给分了,应该是想通了吧:)