Javascript XPATH получает последний элемент повторяющихся дочерних узлов - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь найти способ получить последний экземпляр элемента в ответе XML. XML содержит подробности об ошибках, в которых содержится объект с полными сведениями об ошибках:

<error description="Anything">
    <object>
        <error description="Actual Error">
            <!-- error information in here -->
            <errorCode>123</errorCode>
            <message>Error message</message>
        </error>
    </object>
</error>

Мне всегда нужна последняя «ошибка», и я могу получить подробности ошибки из вышеуказанного штрафа с помощью

error.xpath('/error/object/error').item(0).getAttribute('description');
, за которым следуют последующие детали (код, сообщение и т. Д.)

Проблема возникает, если ошибка возникла через несколько обработчиков исключений, поскольку каждый из них добавляет свой собственный элемент ошибки, и в итоге он выглядит так:

<error description="Anything">
    <object>
        <error description="Something Else">
            <object>
                <error description = "Actual Error">
                    <!-- error information in here -->
                    <errorCode>123</errorCode>
                    <message>Error message</message>
                </error>
            </object>
        </error>
    </object>
</error>

Этот повторяющийся шаблон объектной ошибки может продолжаться более одного раза, в зависимости от того, сколько раз было сгенерировано исключение. Чтобы получить подробности из вышеперечисленного, мне понадобится:

error.xpath('/error/object/error/object/error').item(0).getAttribute('description');

Я бы никогда не ожидал более 2 или 3 повторов, но я не хочу писать неприятный код, чтобы попытаться поймать его на 4 разных уровнях.

Я читал о 'last ()' и пробовал

(//element[@name='error'])[last()]
, но мне кажется, что я неправильно понимаю синтаксис, так как он возвращает undefined.

Есть ли простой способ всегда получить последний (самый глубокий) экземпляр элемента 'error' внутри этого вида повторяющегося дерева XML?

Я только хочу прочитать данные в XML, мне не нужно ничего переводить или изменять.

Большое спасибо!

1 Ответ

0 голосов
/ 05 сентября 2018

Вы можете использовать XML Spear для копирования X-path из xml. Это может начать вас.

Вы можете найти бесплатное программное обеспечение на http://www.donkeydevelopment.com

...