Forcing XDocument.ToString() to include the closing tag when there is no data

那年仲夏 提交于 2019-12-19 05:36:11

问题


I have a XDocument that looks like this:

 XDocument outputDocument = new XDocument(
                new XElement("Document",
                    new XElement("Stuff")
                )
            );

That when I call

outputDocument.ToString()

Outputs to this:

<Document>
    <Stuff />
</Document>

But I want it to look like this:

<Document>
    <Stuff>
    </Stuff>
</Document>

I realize the first one is correct, but I am required to output it this way. Any suggestions?


回答1:


Set the Value property of each empty XElement specifically to an empty string.

    // Note: This will mutate the specified document.
    private static void ForceTags(XDocument document)
    {
        foreach (XElement childElement in
            from x in document.DescendantNodes().OfType<XElement>()
            where x.IsEmpty
            select x)
        {
            childElement.Value = string.Empty;
        }
    }


来源:https://stackoverflow.com/questions/2459138/forcing-xdocument-tostring-to-include-the-closing-tag-when-there-is-no-data

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!