如何告诉
XML解析器来纪念领先和尾随的空格?
Dim xml: Set xml = CreateObject("MSXML2.DOMDocument") xml.async = False xml.loadxml "<xml>1 2</xml>" wscript.echo len(xml.documentelement.text)
以上打印出3.
Dim xml: Set xml = CreateObject("MSXML2.DOMDocument") xml.async = False xml.loadxml "<xml> 2</xml>" wscript.echo len(xml.documentelement.text)
以上打印出来1.(我想要打印2).
有什么特别的,我可以放在xml文档本身,告诉解析器在文档中保持前导和尾随空格?
澄清1:在文档开头有没有特定于ONCE的属性来应用于所有元素?
澄清2:由于实体的内容可能具有unicode数据,但xml文件需要是纯ASCII,所有实体都被编码 – 这意味着CDATA不可用.
正如我所说的,推荐使用xml:space =“preserve”的所有答案都是错误的.
原文链接:https://www.f2er.com/xml/292213.htmlxml:space属性只能用于控制仅空白节点的处理,即完全由空格字符构成的文本节点.
对于目前的问题,情况并非如此.
实际上,下面提供的代码正确地获取了包含在文本节点中的2的长度:
<xml> 2</xml>
以下是正确获取文本节点长度的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 "<xml> 2</xml>" Dim n n = Len(xml.documentelement.selectSingleNode("text()").nodeValue) wscript.echo Len(n) End Sub
如果你把断点放在一起:
wscript.echo Len(n)
你会看到,当调试器打破那里时,n的值为2,因为它是必需的.