【问题标题】:How to add extra root to loaded xml file c#如何将额外的根添加到加载的xml文件c#
【发布时间】:2019-09-24 10:00:02
【问题描述】:

谁能告诉我如何在 c# 中为加载的 xml 文件添加额外的根目录?

现在我有:

<object>
<obj_name>hero1</obj_name>
<field>
</field>
</object>
<object>
<obj_name>hero2</obj_name>
<field>
</field>
</object>

之后我想拥有:

<objects>
<object>
<obj_name>hero1</obj_name>
<field>
</field>
</object>
<object>
<obj_name>hero2</obj_name>
<field>
</field>
</object>
</objects>

我的代码:

        //Create XmlDocument instance
        XmlDocument doc = new XmlDocument();

        //Before loading xml file whtie spaces are allowed
        doc.PreserveWhitespace = false;

        //Loading xml file
        doc.Load(@"..\..\input.xml");

        //Deleting white spaces
        doc.PreserveWhitespace = true;

【问题讨论】:

    标签: c# xml


    【解决方案1】:

    您目前拥有的不是 XML,因为 XML 中不允许有两个根元素。

    您的标题和开场白与您的代码不一致。您已经有两个根元素,并且您正试图将它们包装在一个根元素中,以便您拥有格式良好的 XML。

    您不能使用 XML 库处理格式不正确的 XML(因为它不是 XML);首先你必须修复它。将文件作为文本读取,添加包装器根元素,然后将其解析为 XML。有关处理问题“XML”的更多详细信息,请参阅How to parse invalid (bad / not well-formed) XML?

    【讨论】:

    • 还有一个问题。是否有可能我只能从 xml 文件中解释我关心的那些字段,即我希望 xml 文件被解释,例如 ,
      而我不希望它被解释,例如 ? ?
    • 您可以在网络中处理非格式良好的 Xml。使用 XmlReader 并将 XmlReaderSettings 设置为:settings.ConformanceLevel = ConformanceLevel.Fragment;
    • @jdweng:很高兴知道这一点。我在How to parse invalid (bad / not well-formed) XML? 的回答中添加了对您有用的提示。谢谢。
    • @Drax:“解释”是针对您的应用程序的,因此当然有一些方法可以解释或忽略 XML 元素或属性。但是,您必须澄清您的目标并详细说明您在一个新问题中尝试过的内容,因为 cmets 并不是为此而设计的。谢谢。
    猜你喜欢
    • 2021-07-27
    • 1970-01-01
    • 2019-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多