2011-02-25 70 views
0

我試圖選擇一個xml文件中包含一個已知的字符串,但也包含可能變數的空格字符,如空格和回車返回節點。有沒有辦法。當我嘗試這樣一行:XML DOMDocument方法selectSingleSpace失敗回車在標籤

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> 

有沒有辦法將其格式化標籤文本,使用通配符或類似的東西,或者是讓它忽略空格的標誌?我發現這個preserveWhiteSpace成員變量爲objXML,但將其設置爲false似乎沒有做任何事情。

回答

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']") 
+0

謝謝,那只是我尋找的簡單,優雅的解決方案。 – 2011-02-28 14:13:31