Я должен обработать XML DOM, предпочтительно с JDOM, где я могу сделать поиск XPath на узлах. Я знаю имена узла или пути, но я хочу проигнорировать пространства имен полностью, потому что иногда документ идет с пространствами имен, иногда без, и я не могу полагаться на определенные значения. Это возможно? Как?
Я знаю, что этот вопрос немного устарел, но для тех, кто просматривает это позже, вы можете переопределить несколько классов по умолчанию JDOM, чтобы эффективно заставить его игнорировать пространства имен. Вы можете передать свою собственную реализацию JDOMFactory в SAXBuilder, который игнорирует все значения Namespace, переданные в него.
Затем переопределите класс SAXBuilder и реализуйте метод createContentHandler так, чтобы он возвращал SAXHandler с пустым определением для метода startPrefixMapping.
Я не использовал это в производственных условиях, так что предостерегаю от ошибок, но я убедился, что это действительно работает на некоторых быстрых и грязных XML вещах, которые я делал.
/ns:foo/ns:bar/@baz
становится
/*[local-name() = 'foo']/*[local-name() = 'bar']/@baz
Вы поняли. Не ожидайте, что это будет молниеносно.