选择不包含名称空间的XML节点

时间:2019-07-01 13:57:24

标签: c# xml asp.net-core-2.2

我有一些带有命名空间的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 ..以前是不存在的..我已经尝试了各种方法来删除..

我非常绝望,我正在考虑使用正则表达式(我知道!)-实际上,我认为这在这里不会太糟糕。...

有人有任何建议吗?

0 个答案:

没有答案