XPath для 0- * дочернего уровня - PullRequest
1 голос
/ 15 августа 2011

У меня есть следующий XML-файл:

<?xml version="1.0" encoding="UTF-16"?>
<Export>
    <Folder ID="1004">
        <Object ID="124" Name="NameABC" />
    </Folder>
    <Folder ID="1016">
       <Folder Name="B">
            <Object ID="124" Name="Name1" />
                <Folder Name="A">
                    <Object ID="121244" Name="Name2" />
                    <Object ID="122134" Name="Name12" />
                    <Folder Name="KS">
                        <Object ID="667" Name="Name43" />
                    </Folder>
                </Folder>
        </Folder>
    </Folder>
</Export>

Теперь мне нужно получить все <Object>, в которых есть ID и ИМЯ. Иногда под первой папкой находится 0 папка с идентификатором 1016, а иногда 4.

Мне нужно использовать выражение XPath. Я надеюсь, что вы можете мне помочь. Спасибо.

Ответы [ 2 ]

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

//folder[@ID='some_id' and @Name='some_name']/descendant::*

См:

xpath axes

0 голосов
/ 15 августа 2011
<xsl:apply-templates select="//Object">
   <xsl:value-of select="@ID"/> - <xsl:value-of select="@Name"/>
</xsl:apply-templates>

будет соответствовать всем <Object> элементам и выведет значения атрибутов ID и Name.

Селектор потомок (из документации 1008 *) // - это сокращение /descendant-or-self::node()/

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