Xpath найти определенное значение и значения других тегов в том же дереве

1

Использование PHP, SimpleXML и XPATH; Я хочу найти конкретный serviceId, а затем найти значения DMA и аббревиатуры. Я могу найти конкретный serviceId с помощью $xml->xpath(//d:ServiceId[.= '123']), но я не уверен, как изменить запрос xpath, чтобы также вернуть DMA и аббревиатуру.

<?xml>
    <feed xmlns:m="" xmlns:d="">
        <entry>
            <content>
                <m:properties>
                    <d:ServiceId>123</d:ServiceId>
                    <d:ServiceName>Service 1</d:ServiceName>
                    <d:DMA>DMA 1</d:DMAName>
                    <d:Abbreviation>ABC</d:Abbreviation>
                </m:properties>
            </content>
            <content>
                <m:properties>
                    <d:ServiceId>456</d:ServiceId>
                    <d:ServiceName>Service 2</d:ServiceName>
                    <d:DMA>DMA 2</d:DMAName>
                    <d:Abbreviation>DEF</d:Abbreviation>
                </m:properties>
            </content>
            <content>
                <m:properties>
                    <d:ServiceId>789</d:ServiceId>
                    <d:ServiceName>Service 3</d:ServiceName>
                    <d:DMA>DMA 3</d:DMAName>
                    <d:Abbreviation>HIJ</d:Abbreviation>
                </m:properties>
            </content>
        </entry>
    </feed>
</xml>
Теги:
xpath

1 ответ

1

Сначала нужно получить m:properties node. Чтобы использовать это XPath:

//m:properties[d:ServiceId = 123]

После этого просто запросите этот узел для извлечения d:DMA и d:Abbreviation элементы. Извините, я не знаю PHP, но это должно быть просто.

Как альтернатива, попробуйте этот XPath с оператором union:

//m:properties[d:ServiceId = 123]/d:DMA | //m:properties[d:ServiceId = 123]/d:Abbreviation
  • 1
    Спасибо!. Получил это работает
  • 0
    @jsachnet, пожалуйста.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню