XElement.SetElementValue会覆盖元素

时间:2014-10-17 16:58:58

标签: c# unity3d monodevelop xelement

我有以下结构:

<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#&amp; Unity3D的MonoDevelop。

1 个答案:

答案 0 :(得分:0)

这似乎是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团队回答了我

  

嗨,

     

我们已经能够重现这个错误并将其发送给我们的开发人员解决。

     

我们非常感谢您的贡献。如果您还有其他问题,请随时与我们联系。