为什么C#在XDocument中保留未关闭的标记?
我有一份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
<?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 />