如何告诉XML解析器尊重前导和尾随空格?
Dim xml: Set xml = CreateObject("MSXML2.DOMDocument") xml.async = False xml.loadxml "1 2 " wscript.echo len(xml.documentelement.text)
上面印有3个.
Dim xml: Set xml = CreateObject("MSXML2.DOMDocument") xml.async = False xml.loadxml "2 " wscript.echo len(xml.documentelement.text)
上面打印出来1.(我想打印2).
有什么特别的东西我可以放在xml文档本身告诉解析器在文档中保持前导和尾随空格吗?
澄清1:是否有一个属性可以在文档的开头定义为适用于所有元素?
澄清2:因为实体的内容可能有unicode数据,但xml文件需要是简单的ascii,所有实体都是编码的 - 这意味着CDATA不可用.
正如我评论的那样,所有推荐使用的答案xml:space="preserve"
都是错误的.
该xml:space
属性只能用于控制仅空白节点的处理,即完全由空白字符组成的文本节点.
对于当前的问题,情况并非如此.
实际上,下面提供的代码正确地获得了包含在以下内容中的文本节点的长度2:
2
这是正确获取文本节点长度的VB代码(不要忘记添加对"Microsoft XML,v 3.0"的引用):
Dim xml As MSXML2.DOMDocument Private Sub Form_Load() Set xml = CreateObject("MSXML2.DOMDocument") xml.async = False xml.loadxml "2 " Dim n n = Len(xml.documentelement.selectSingleNode("text()").nodeValue) wscript.echo Len(n) End Sub
如果你在行上放置一个断点:
wscript.echo Len(n)
你会看到,当调试器在那里中断时,值为n
2,因为它是必需的.
因此,此代码是正在寻求的解决方案.