如何使用c#和Unity3D从脚本中添加和删除XML文件中的节点

本文关键字:删除 节点 XML 文件 添加 脚本 何使用 Unity3D | 更新日期: 2023-09-27 18:18:59

我需要在Unity3D中使用c#添加和删除XML节点。在XML文件中有Purchased-AssetsUnbought-Assets。当单击按钮时,我想从Unbought-Assets节点中删除一个名为UnPurchased-Asset的项目,并将该项目添加到Purchased-Assets作为Purchased-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>

如何使用c#和Unity3D从脚本中添加和删除XML文件中的节点

//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