我有一个看起来像这样的XDocument:
XDocument outputDocument = new XDocument(
new XElement("Document",
new XElement("Stuff")
)
);
当我打电话时
outputDocument.ToString()
输出到:
<Document>
<Stuff />
</Document>
但我希望它看起来像这样:
<Document>
<Stuff>
</Stuff>
</Document>
我意识到第一个是正确的,但我需要以这种方式输出它。有什么建议吗?
答案 0 :(得分:13)
将每个空Value
的{{1}}属性专门设置为空字符串。
XElement
答案 1 :(得分:0)
存在空标签时使用XNode.DeepEquals的问题,这是比较XML文档中所有XML元素的另一种方法(即使XML关闭标签不同,这也应该起作用)
public bool CompareXml()
{
var doc = @"
<ContactPersons>
<ContactPersonRole>General</ContactPersonRole>
<Person>
<Name>Aravind Kumar Eriventy</Name>
<Email/>
<Mobile>9052534488</Mobile>
</Person>
</ContactPersons>";
var doc1 = @"
<ContactPersons>
<ContactPersonRole>General</ContactPersonRole>
<Person>
<Name>Aravind Kumar Eriventy</Name>
<Email></Email>
<Mobile>9052534488</Mobile>
</Person>
</ContactPersons>";
return XmlDocCompare(XDocument.Parse(doc), XDocument.Parse(doc1));
}
private static bool XmlDocCompare(XDocument doc,XDocument doc1)
{
IntroduceClosingBracket(doc.Root);
IntroduceClosingBracket(doc1.Root);
return XNode.DeepEquals(doc1, doc);
}
private static void IntroduceClosingBracket(XElement element)
{
foreach (var descendant in element.DescendantsAndSelf())
{
if (descendant.IsEmpty)
{
descendant.SetValue(String.Empty);
}
}
}