помогите с выбором узлов с помощью xpath - PullRequest
1 голос
/ 24 марта 2010

Моя структура XML выглядит следующим образом:

<entity id="1000070">
    <name>apple</name>
    <type>category</type>
    <entities>
        <entity id="7002870">
            <name>mac</name>
            <type>category</type>
            <entities>
                <entity id="7002907">
                    <name>leopard</name>
                    <type>sub-category</type>
                    <entities>
                        <entity id="7024080">
                            <name>safari</name>
                            <type>subject</type>
                        </entity>
                        <entity id="7024701">
                            <name>finder</name>
                            <type>subject</type>
                        </entity>
                    </entities>
                </entity>
            </entities>
        </entity>
        <entity id="7024080">
            <name>iphone</name>
            <type>category</type>
            <entities>
                <entity id="7024080">
                    <name>3g</name>
                    <type>sub-category</type>
                </entity>
                <entity id="7024701">
                    <name>3gs</name>
                    <type>sub-category</type>
                </entity>
            </entities>
        </entity>
        <entity id="7024080">
            <name>ipad</name>
            <type>category</type>
        </entity>
    </entities>
</entity>

В настоящее время я выбрал все объекты с типом узла, который не является категорией.

$ xmlDocument-> removeNodes ( "// объект [нет (тип = 'категория')]")

Мне интересно, как я мог бы выбрать все узлы, которые не содержат тип = категория ИЛИ тип = подкатегория.

Я пытался с:

$xmlDocument->removeNodes("//entity[not(type='category')] | //entity[not(type='sub-category')]")

но это не работает!

Ответы [ 2 ]

3 голосов
/ 24 марта 2010

Попробуйте:

//entity[not(type='category' or type='sub-category')]

Вы можете найти этот испытательный стенд для выражений XPath полезным.

2 голосов
/ 24 марта 2010

Я думаю, что вы хотите:

//entity[not(type='category' or type='sub-category')]

Вот хороший (если кратко) ресурс: http://www.w3schools.com/xpath/xpath_operators.asp

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