簡體   English   中英

UNITY 3D C#XML合並

[英]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,這非常好!

XmlSerializer保存和加載數據

您將像這樣加載兩個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM