为什么C#在XDocument中留下未关闭的标签?

时间:2018-05-19 15:27:42

标签: c# xml-parsing

我有一个看起来像这样的XDocument:

<?xml version="1.0"?>
<notebook>
    <note>
        <person>
            <surname>Che Guevara</surname>
            <name>Ernesto</name>
            <birthdate>1926</birthdate>
            <telephones>
                <telephone>79626195740</telephone>
            </telephones>
        </person>
    </note>
    <note>
        <person>
            <surname>Castro</surname>
            <name>Fidel</name>
            <birthdate>1926</birthdate>
            <telephones>
                <telephone>79626195740</telephone>
                <telephone>79636296751</telephone>
            </telephones>
        </person>
    </note>
</notebook>

我需要删除所有节点“note”,所以我使用

xd.Element("notebook").Elements("note").Remove();

我无法弄清楚为什么这个方法会像我这样留下我的.xml文件

<?xml version="1.0" encoding="utf-8"?>
<notebook />

为什么它不能正常工作?

1 个答案:

答案 0 :(得分:1)

它正常工作,你所指的notebook元素被称为&#34;自闭元素&#34;。 使用XDocument时,<notebook />表示与<notebook></notebook>相同,但这可能会导致其他XML解析器出现问题,其中一些可能无法识别<notebook />。 可能XDocument会生成自闭元素,因为它们更小,从而节省了空间。