【解决】InvalidOperationException: This document already has a ‘DocumentElement‘ node

本文针对Unity游戏中遇到的XML文档异常问题进行了解析,并提供了一种有效的解决方案。通过具体案例展示了如何修正XML文档结构,确保其符合正确的层级关系。

游戏引擎:Unity
版本:2019.4.6f1 【2017版本以上均可】
编译平台:Visual Studio 2019

问题截图

问题描述图

问题描述

  翻译:无效的异常操作:该文档已具有“ DocumentElement”节点

解决方案

方案1

1.0 检查XML格式是否正确

  XML类似于HTML,有着以下严格的包含关系。切勿出现越级包含的关系。

声明关系对象
XmlDocument包含编码头部声明、根节点
XmlElement(节点元素)包含各级节点及内容

1.1 相关案例详解

  如下图示例为一个简略不完整的基本框架内容。

//需求XMLDoc
XmlDocument xmlDoc = new XmlDocument();
        
//编码头部声明
XmlDeclaration header = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", "");
xmlDoc.AppendChild(header);
        
//根节点
XmlElement root = xmlDoc.CreateElement("root_CharacterTemplateData");
xmlDoc.AppendChild(root);

//一级节点  Id Name                                               ------------以下两行为问题行
XmlElement child = xmlDoc.CreateElement("CharaterTemplateData");
xmlDoc.AppendChild(child);

child.SetAttribute("id", "1000");
child.SetAttribute("name", "法师");

  其中,我们在一级节点处xmlDoc.AppendChild(child);添加节点元素,添加方式向xmlDoc添加,违背了格式的严格要求。正确的添加方式为root.AppendChild(child),即向一级节点的上一级root(根节点)。

ps:这里的root仅仅是命名关系,可以更改为其他命名,但XML格式严格遵循上表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值