我正在尝试使用某种格式解析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的值但是当我尝试获取field2的值时,它会失败:
/document/field[@loc='field2']
任何帮助将不胜感激。 感谢
答案 0 :(得分:1)
好/document/field[@loc = 'field2']
应该足以找到该字段的字符串值,而不管元素中是否存在任何注释。或者您也想选择评论吗?
答案 1 :(得分: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 for for value。
<xsl:template match="/">
<xsl:for-each select='//field'>
<xsl:value-of select='.'/>
<xsl:value-of select="comment()"/>
</xsl:for-each>
</xsl:template>
希望这会有所帮助......