Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用xpath获取xml中嵌入的b/w注释值_Xml_Xpath - Fatal编程技术网

使用xpath获取xml中嵌入的b/w注释值

使用xpath获取xml中嵌入的b/w注释值,xml,xpath,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> 任

我试图用某种格式解析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>
任何帮助都将不胜感激。
谢谢

那么
/document/field[@loc='field2']
应该足以找到该字段的字符串值,与元素中是否存在任何注释无关。或者也要选择注释?

从DOM代码中,您可以访问注释或值,它们与其他所有内容一样显示为子节点(节点类型node_COMMENT value 8)

函数列表注释(ndField){
var i=0;
对于(i=0;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>

希望这有助于

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] );
    }
<xsl:template match="/">
    <xsl:for-each select='//field'>
        <xsl:value-of select='.'/>
        <xsl:value-of select="comment()"/>
    </xsl:for-each>
</xsl:template>