Использование SAX Parsing для анализа XML с вложенными элементами - PullRequest
0 голосов
/ 06 января 2012

Рассмотрим следующий пример -

<a>abc</a>
<a>
    <a>bcd</a>
</a>
<a>
    <b>
        <a>
            <a>
                 def
            </a>
        </a>
    </b>
</a>

мы должны сделать что-то другое, когда мы встречаем элемент <a>, если это дочерний узел другого элемента a или b, и мы имеем дело с другой вещью, когда мы встречаем <a> как прямой дочерний элемент корня.

Как обработать этот файл с помощью SAX-парсеров?

Пожалуйста, объясните.

1 Ответ

0 голосов
/ 06 января 2012

Я не знаком с "SAX-парсерами", но если вы можете использовать Xpath для идентификации узлов, которые вы хотите обработать, тогда будет проверено, является ли узел <a> дочерним по отношению к a или b:

a[parent::*[self::a or self::b]]

Если это действительный документ XML, я предполагаю, что есть корневой элемент с именем, и, поскольку вы здесь его не проиллюстрировали, я приведу пример, основанный на предположении, чтоэто называется "корневой элемент".В этом случае это вернет true, если <a> является его прямым потомком:

a[parent::root-element]

Возможно, есть другие способы достижения этого в зависимости от того, используете ли вы Xpath 2 или нет, но я думаю, что это должноработать во всех случаях.Я надеюсь, что это поможет - если нет, предоставьте более подробную информацию о конкретной среде, которую вы используете, и я уверен, что кто-то сможет предоставить более точную помощь.

...