Как определить все пространства имен в документе XML - PullRequest
1 голос
/ 13 февраля 2012

Я пытаюсь использовать запросы XPath к документу с несколькими пространствами имен, и мне нужно определить NamespaceContext.Единственный способ получить все пространства имен, о которых я могу подумать, - это итерация по всем узлам и атрибутам и явный сбор URI и префиксов их пространства имен.Это кажется очень неэффективным, и я сомневаюсь, что это лучшая практика.

Как это сделать?
Спасибо

1 Ответ

2 голосов
/ 13 февраля 2012

Поскольку пространства имен могут быть определены как в заголовке документа XML, так и в самих элементах, вы правы;если вам нужно КАЖДОЕ пространство имен, используемое в документе, вам нужно будет обработать весь документ (включая все операции импорта, если вы хотите выполнить его на 100%).

Если вы хотите, чтобы люди могли запрашивать ваш документ, например,база данных с запросами XPath-esque, вы, вероятно, захотите загрузить документ в представление в памяти, которое можно быстро запросить в любом случае.

Учитывая, что вам все равно придется обрабатывать все это в памяти,это была бы ваша возможность проанализировать все пространства имен.

ПРИМЕЧАНИЕ. Я игнорирую «почему», вам понадобятся все пространства имен, я просто предполагаю, что они вам нужны, и в этом случае ваше предположение об обработке всего документаправильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...