Выберите узел XML без включенного пространства имен - PullRequest
0 голосов
/ 01 июля 2019

У меня есть какой-то XML с пространством имен ..

<batch xmlns="http://www.mydomain.uk/batch" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="applications.xsd">
    <header>
        ...
    </header>
    <applications>
        <application>
            <details>
                <Title>MR</Title>
                <Forename>Jonathh</Forename>
                <Middlenames>
                    <Middlename>on</Middlename>
                    <Middlename>ath</Middlename>
                </Middlenames>
                <PresentSurname>H</PresentSurname>
            </details>
        </application>
    </applications>
</batch>

Мне нужно вытащить приложения, которые я могу сделать, но только указав пространство имен.

var namespaceManager = new XmlNamespaceManager(doc.NameTable);
namespaceManager.AddNamespace("eb", "http://www.mydomain.uk/batch");

var protectedElement = doc.SelectSingleNode("/eb:batch/eb:applications", namespaceManager);

Проблема для меня заключается в том, что пространство имен затем распространяется вниз к выбранному узлу E.G.

<applications xmlns="http://www.mydomain.uk/batch">
    <application>
        <details>
            <Title>MR</Title>
            <Forename>Jonathh</Forename>
            <Middlenames>
                <Middlename>on</Middlename>
                <Middlename>ath</Middlename>
            </Middlenames>
            <PresentSurname>H</PresentSurname>
        </details>
    </application>
</applications>

Обратите внимание на маленькие хитрые xmlns в теге приложений сейчас ... которых там не было раньше ... Я пробовал все виды вещей, чтобы удалить ..

Я так отчаялся, что вместо этого рассматриваю регулярное выражение (я знаю!) - что, на самом деле, я не думаю, было бы здесь слишком ужасно ...

Кто-нибудь получил какие-либо предложения?

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