0

我需要在 Unity3D 中使用 C# 添加和删除 XML 节点。在 XML 文件中有Purchased-AssetsUnbought-Assets。单击按钮时,我想UnPurchased-AssetUnbought-Assets节点中删除一个命名并将此项添加Purchased-AssetsPurchased-Asset. 我不知道从哪里开始。

到目前为止的代码(C#):

using UnityEngine;
using System.Collections;
using System.Xml;
using System.IO;

public class MyAppStuffCode : MonoBehaviour
{
    XmlDocument xml;
    public XmlNodeList _name;

    //Used to load XML file.
    xml = new XmlDocument();
    xml.Load(Application.dataPath + "/Resources/MyAppStuffXml.xml");

    // Use this for initialization
    void Start () 
    { 
    }

    // Update is called once per frame
    void Update () 
    {
    }

    public void OnButtonClicked(string BName)
    {
        // Code to add/remove XML nodes here!
    }
}

示例 XML 文件:

<TreasureChart>
    <Dudes>
        <Rapper>

            <!-- Purchased assets -->

            <Purchased-Assets>
                <Purchased-Asset>
                    <Name>BackTalk</Name>
                    <ID>A</ID>
                    <Points>20</Points>
                </Purchased-Asset>
                <Purchased-Asset>
                    <Name>Beard</Name>
                    <ID>B</ID>
                    <Points>20</Points>
                </Purchased-Asset>
                <Purchased-Asset>
                    <Name>IntroRap</Name>
                    <ID>C</ID>
                    <Points>20</Points>
                </Purchased-Asset>
                <Purchased-Asset>
                    <Name>Moustache</Name>
                    <ID>D</ID>
                    <Points>20</Points>
                </Purchased-Asset>
                <Purchased-Asset>
                    <Name>MyFaceDudeRap</Name>
                    <ID>E</ID>
                    <Points>20</Points>
                </Purchased-Asset>
                <Purchased-Asset>
                    <Name>MyFaceMyRap</Name>
                    <ID>F</ID>
                    <Points>20</Points>
                </Purchased-Asset>
            </Purchased-Assets>

            <!-- Unbought assets -->

            <Unbought-Assets>
                <UnPurchased-Asset>
                    <Name>Share</Name>
                    <ID>D</ID>
                    <Points>20</Points>
                </UnPurchased-Asset>
                <UnPurchased-Asset>
                    <Name>SunGlasses</Name>
                    <ID>E</ID>
                    <Points>20</Points>
                </UnPurchased-Asset>
            </Unbought-Assets>
        </Rapper>
    </Dudes>
</TreasureChart>
4

1 回答 1

4
//Create a new XML element.
XmlElement node = xmlDocument.CreateElement("NewElement");

//Use node.AppendChild(child) to add more nodes to the node.

//Add the new element to the root of the document.
xmlDocument.DocumentElement.AppendChild(node);

//Remove the new element from the root of the document.
xmlDocument.DocumentElement.RemoveChild(node);

要在文档中查找特定节点,请使用索引器:

//Get the root node.
XmlElement root = xmlDocument.DocumentElement;

//Get the "Purchased-Assets" node that is nested inside the root.
XmlElement assets = root["Purchased-Assets"];

//Loop though each child
foreach(XmlNode childAsset in assets.ChildNodes)
{
     //Find the "ID" element of the child, you could easily replace this
     //to find the "Name" element.
     XmlElement id = childAsset["ID"];

     //If there is an "ID" element
     if(id != null)
     {
         //if the id node of the current child equals "20"
         if(id.InnerText.Equals("20"))
         {
              //then remove the asset from the "Purchased-Assets" node
              assets.RemoveChild(childAsset);
         }
     }
}

更多信息请参见:MSDN:XmlDocument

于 2013-06-18T15:57:34.870 回答