Как я могу заставить JDOM/XPath игнорировать пространства имен?

Я должен обработать XML DOM, предпочтительно с JDOM, где я могу сделать поиск XPath на узлах. Я знаю имена узла или пути, но я хочу проигнорировать пространства имен полностью, потому что иногда документ идет с пространствами имен, иногда без, и я не могу полагаться на определенные значения. Это возможно? Как?

5
задан AdSR 9 April 2010 в 12:40
поделиться

2 ответа

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

Затем переопределите класс SAXBuilder и реализуйте метод createContentHandler так, чтобы он возвращал SAXHandler с пустым определением для метода startPrefixMapping.

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

3
ответ дан 18 December 2019 в 06:11
поделиться
/ns:foo/ns:bar/@baz

становится

/*[local-name() = 'foo']/*[local-name() = 'bar']/@baz

Вы поняли. Не ожидайте, что это будет молниеносно.

17
ответ дан 18 December 2019 в 06:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: