2016-08-26 11 views
2

2つのXMLファイルをマージして新しいものを作成する最も単純な方法は何ですか?私は単一性を使用していると私はそれがC#のAPIのansの参照で制限されていると私はプロのプログラマーではないと思う。UNITY 3D C#XML MERGE

ファイル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> 
+0

は2に2つのファイルをロードしますそれらのオブジェクトのうちの2つのオブジェクトの 'Data'フィールドを結合し、オブジェクトをxmlとして保存します。うまくいけば、それはあなたを始めて、ちょうどそれらの3つのステップのそれぞれを個別に解決する方法に焦点を当てると、問題をより容易に研究することがわかります。 –

答えて

0

私は、より一般的なの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){...} 
} 

あなたは読み込み/書き込みデータのヘルプが必要な場合は特に、あなたがこのウィキをチェックアウトすることができ、それは非常によくやっています!

Saving and Loading Data, XmlSerializer

あなたは次のようにあなたの2つの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);