[英]UNITY 3D C# XML MERGE
合并两个XML文件并创建一个新XML文件的最简单方法是什么? 我正在使用unity,我认为它在C#API和引用中受到限制,而且我不是专业的程序员。
文件1:
<?xml version="1.0" encoding="UTF-8"?>
<UserData>
<Data>
<FIELD1>NAME 1</FIELD1>
</Data>
</UserData>
档案2:
<?xml version="1.0" encoding="UTF-8"?>
<UserData>
<Data>
<FIELD2>NAME 2</FIELD2>
</Data>
</UserData>
结果:
<?xml version="1.0" encoding="UTF-8"?>
<UserData>
<Data>
<FIELD1>NAME 1</FIELD1>
<FIELD2>NAME 2</FIELD2>
</Data>
</UserData>
首先,让您的UserData实现更通用,以便它可以接受多种字段类型,而不是field1和field2,例如:
<?xml version="1.0" encoding="UTF-8"?>
<UserData>
<Data>
<Field>NAME 1</Field>
<Field>NAME 2</Field>
</Data>
</UserData>
然后,您的容器可能如下所示:
[XmlRoot("UserData")]
public class UserDataContainer
{
public UserDataContainer() {...}
// Can be used load and save a list of strings (Field(s) in XML)
[XmlArray("Data"), XmlArrayItem("Field"),Type = typeof(string))]
public List<string> Data = new List<string>();
public static UserDataContainer Load(path){...}
public void Save(path){...}
public List<string> GetFields(){...}
public void SetFields(List<string> Fields){...}
}
如果您需要有关加载/写入数据的帮助,则可以查看此Wiki,这非常好!
您将像这样加载两个UserData文件:
UserDataContainer UserData1 = UserDataContainer.Load(UserData1Path);
UserDataContainer UserData2 = UserDataContainer.Load(UserData2Path);
以后,当您要合并它们时,可以执行以下操作:
// Get the contents of the first user data
List<string> CombinedDatas = UserData1.GetFields();
// Combine in the contents of the second user data
// AddRange actually changes the first list (CombinedDatas)
CombinedDatas.AddRange(UserData2.GetFields());
// If you wanted to save out the combined data in a new xml file
UserDataContainer FinalData = new UserDataContainer();
FinalData.SetFields(CombinedDatas);
FinalData.Save(FinalDataPath);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.