为什么C#在XDocument中保留未关闭的标记?

为什么C#在XDocument中保留未关闭的标记?,c#,xml-parsing,C#,Xml Parsing,我有一份XDocument,看起来像这样: <?xml version="1.0"?> <notebook> <note> <person> <surname>Che Guevara</surname> <name>Ernesto</name> <birthdate>1926</birth

我有一份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>
我不明白为什么这个方法会这样离开我的.xml文件

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


为什么它不能正常工作?

它工作正常,您所指的
笔记本
元素称为“自动关闭元素”。 在使用XDocument时,
的意思与
相同,但这可能会导致其他XML解析器出现问题,其中一些可能无法识别

XDocument可能会生成自动关闭的元素,因为它们小得多,从而节省空间。

等于
它不是一个未关闭的标记;这是一个自动关闭的标签。如果您不想要自关闭标记,请使用架构来告诉.NET它不是自关闭标记,或者使用副本中概述的技术。但是,就XML而言,它并不“相等”,因为定义(架构或doctype)控制它是否是自关闭标记。根据这个定义,一致性解析器可以在接受
@MikeMcCaughan时拒绝
。@MikeMcCaughan谢谢,我将把它添加到我的答案中。哦,我对我的任务感到困惑。我是在你的帮助下做的。谢谢你的快速回答@MikeMcCaughan为此被传唤?我不记得用XSD你能做到。。。因为我在中看到了一个相反的元素,所以说XSD在形式上没有定义空元素和自关闭元素的方法,这是正确的,但是在很多解析器中都有一些怪癖。例如,见。DTD会影响元素是否自动关闭。请看同一个问题。现在,这个问题特定于PHP的XML(HTML?)解析器,但我希望其他解析器也有类似的怪癖。因此我的评论。
<?xml version="1.0" encoding="utf-8"?>
<notebook />