我有下一个简单的xml文件:
<?xml version="1.0" encoding="UTF-8" ?><work><pageSetup paperSize="9" fitToHeight="0" orientation="landscape"></pageSetup></work>
当我运行下一个代码时:
using (XmlReader reader = XmlReader.Create(inFile))
while (reader.Read())
Console.WriteLine("Name = {0}, NodeType = {1}, IsEmptyElement ={2}\n", reader.Name, reader.NodeType, reader.IsEmptyElement);
输出为:
名称= xml,NodeType = XmlDeclaration,IsEmptyElement = False
名称=工作,NodeType =元素,IsEmptyElement = False
名称= pageSetup,NodeType =元素,IsEmptyElement = False
名称= pageSetup,NodeType = EndElement,IsEmptyElement = False
名称=工作,NodeType = EndElement,IsEmptyElement = False
如您所见,pageSetup的IsEmptyElement = False(我不知道为什么...请参阅https://msdn.microsoft.com/en-us/library/system.xml.xmltextreader.isemptyelement.aspx)
但是,如果我foramt带有换行符的xml(在Notepad ++中为ctrl + alt + shift + b):
<?xml version="1.0" encoding="UTF-8" ?>
<work>
<pageSetup paperSize="9" fitToHeight="0" orientation="landscape"/>
</work>
并运行程序,输出为:
名称= xml,NodeType = XmlDeclaration,IsEmptyElement = False
名称=,NodeType =空格,IsEmptyElement = False
名称=工作,NodeType =元素,IsEmptyElement = False
名称=,NodeType =空格,IsEmptyElement = False
名称= pageSetup,NodeType =元素,IsEmptyElement = True
名称=,NodeType =空格,IsEmptyElement = False
名称=工作,NodeType = EndElement,IsEmptyElement = False
如您所见,pageSetup的IsEmptyElement = True
为什么两个xml文件之间不同(在pageSetup的IsEmptyElement值中)?
最佳答案
根据MSDN
,IsEmptyElement
仅报告源文档中的元素是否具有结束元素标签。
在第一种情况下,您有一个end元素,因此IsEmptyElement
返回false
(尽管元素内容为空),在第二种情况下,您没有结束标记,这就是为什么您将IsEmptyElement
设置为true
的原因。