XElement.SetElementValue覆盖元素
本文关键字:元素 覆盖 SetElementValue XElement | 更新日期: 2023-09-27 18:26:52
我有以下结构:
<Root name="jack">
<Ele1>4</Ele1>
<Ele2>4</Ele2>
<Ele3>4</Ele3>
<Ele4>4</Ele4>
</Root>
我想修改一些值,所以我使用以下代码:
XElement root1 = new XElement("Root");
root1.SetAttributeValue("name", "jack");
root1.SetElementValue("Ele1", 1);
root1.SetElementValue("Ele2", 2);
root1.SetElementValue("Ele3", 3);
这样做的结果是一种新的结构:
<Root name="jack">
<Ele3>3</Ele3>
</Root>
如果我在设置Ele2的值后打印root1 Debug.Log(root1)
,结果是:
<Root name="jack">
<Ele2>2</Ele2>
</Root>
如果我在设置Ele1的值后分别这样做。
我正在使用C#;Unity3D的MonoDevelop
Unity3D似乎有问题,因为它是一个非常简单的代码。就像我说的,结构就在那里,所以我可以先阅读,而不是直接修改。从xml文件中读取root1
后我所做的工作
string name;
foreach ( XElement ele in root1.Elements() ){
name = ele.Name.LocalName;
if ( !doNotChange.Contains (name) )
ele.SetValue ( PlayerPrefs.GetInt( name ) );
}
其中doNotChange
是一个字符串列表,其中包含那些我不需要修改的元素。我真的不知道为什么SetElementValue
不能在Unity3D中工作,而SetValue
可以。我已经向Unity3D报告了。我会用他们的答案编辑帖子。
编辑:Unity QA团队回答我
嘿,
我们已经能够重现这个错误,并已将其发送给我们的开发人员进行解决。
我们高度赞赏你的贡献。如果您还有其他问题,请随时与我们联系。