我正在尝试在包含已知字符串的xml文件中选择一个节点,但也包含可能可变数量的空白字符,例如空格和回车符。有办法吗?当我尝试一下这样的行:
Set objXML = CreateObject("MSXML2.DOMDocument.4.0")
Set objNode = objXML.documentElement.selectSingleNode("//Main/Subgroup/MyTag[Label='SomeText']")
适用于此:
<?xml version="1.0" encoding="UTF-16" ?>
<Main>
<Subgroup>
<MyTag>
<Label>SomeText</Label>
</MyTag>
</Subgroup>
</Main>
但是它返回null:
<?xml version="1.0" encoding="UTF-16" ?>
<Main>
<Subgroup>
<MyTag>
<Label>
SomeText
</Label>
</MyTag>
</Subgroup>
</Main>
有没有办法使用通配符或类似的东西格式化Label文本,或者是一个让它忽略空格的标志?我为objXML找到了这个preserveWhiteSpace成员变量,但是将它设置为false似乎没有做任何事情。
答案 0 :(得分:1)
如果您使用XPath,则可以使用contains(node, selectiontext)
函数,即
Set objXML = CreateObject("MSXML2.DOMDocument.4.0")
objXML.setProperty "SelectionLanguage", "XPath"
objXML.load "file.xml"
Set objNode = objXML.documentElement.selectSingleNode("//Main/Subgroup/MyTag[contains(Label, 'SomeText')]")
虽然这也会匹配任何包含'SomeText'的字符串。另一种方法是使用normalize-space(node)
:
Set objNode = objXML.documentElement.selectSingleNode("//Main/Subgroup/MyTag[normalize-space(Label) = 'SomeText']")