получить значение встроенных ч / б комментариев в xml, используя xpath - PullRequest
0 голосов
/ 19 августа 2011

Я пытаюсь проанализировать XML-документ с определенным форматом. Проблема возникает, когда у меня есть значения тегов, встроенных в ч / б комментарии, например,

<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']

любая помощь будет оценена. спасибо

Ответы [ 2 ]

1 голос
/ 19 августа 2011

Хорошо /document/field[@loc = 'field2'] должно быть достаточно, чтобы найти строковое значение этого поля, независимо от наличия каких-либо комментариев внутри элемента.Или вы также хотите выбрать комментарии?

0 голосов
/ 20 августа 2011

Из кода 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 ()получить комментарии или просто значение: для фактического значения.

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

Надеюсь, это поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...