2011-08-19 52 views
0

我想用某種格式解析xml文檔。如果我有嵌入黑白註釋的標籤值,例如使用xpath在xml中獲取值嵌入的b/w註釋

<document> 
    <field loc="field1">field name 1</field> 
    <field loc="field2"><!--this is a comment-->field name 2<!--also a comment--></field> 
</document> 

我可以得到field1的值,但是當我試圖讓值場2,它失敗:

/document/field[@loc='field2'] 

任何幫助將不勝感激。 謝謝

回答

1

那麼/document/field[@loc = 'field2']應該足以找到該字段的字符串值,獨立於元素內的任何評論的存在。還是你想選擇評論?

0

從DOM代碼中,您可以訪問註釋或值,它們像其他所有節點(節點類型NODE_COMMENT值8)一樣顯示爲子節點。

function listComments(ndField) { 
    var i = 0; 
    for(i = 0; i < ndField.childNodes.length; i++) { 
     switch(ndField.childNodes[i].nodeType) { 
      case 3: // element 
       WScript.Echo("Element Text: " + ndField.childNodes[i].text); 
       break 
      case 8: // comment 
       WScript.Echo("Comment Text: " + ndField.childNodes[i].data); 
       break 
     } 
    } 
} 


try { 
    var xml = new ActiveXObject(strDOMObject); 
    xml.load("test.xml"); 
    var i = 0; 

    var ndFields = xml.selectNodes("//field"); 
    for(i = 0; i < ndFields.length; i++) { 
     listComments(ndFields[i]); 
    } 

從XSLT中,使用XSL comment()函數獲取註釋,或者僅使用值:of作爲實際值。

<xsl:template match="/"> 
    <xsl:for-each select='//field'> 
     <xsl:value-of select='.'/> 
     <xsl:value-of select="comment()"/> 
    </xsl:for-each> 
</xsl:template> 

希望這有助於...