XML DOMDocument方法selectSingleSpace在标记中回车时失败

时间:2011-02-25 23:56:42

标签: xml vbscript

我正在尝试在包含已知字符串的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似乎没有做任何事情。

1 个答案:

答案 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']")