Unity 读取Xml

本文介绍如何在Unity中有效读取XML文件,重点强调需要跳过BOM以避免无法获取XML数据的问题。

使用 Untiy读取XML,读取成功关键在与17~19这三行,一定要跳过BOM,要不然就一直获取不到值。

IEnumerator LoadXml( string filePath, string imageName)
    {
        WWW www = new WWW(filePath);
        yield return www;
        //Debug.Log(www.text);

        if (www.error != null)
        {
            print("The request failed");
        }
        else
        {
            print("The request is successful");
            //创建
            XmlDocument XmlDoc = new XmlDocument();
            //跳过BOM 
            System.IO.StringReader stringReader = new System.IO.StringReader(www.text);
            stringReader.Read();
            string result = stringReader.ReadToEnd();
            //关闭
            stringReader.Close();

            //加载文本
            XmlDoc.LoadXml(result);

            //获取节点个数
            int XmlCount = XmlDoc.GetElementsByTagName("JD").Count;

            for (int i = 0; i < XmlCount; i++)
            {
                if (XmlDoc.
Unity读取 XML 文件可以使用 `XmlDocument` 类,这是一个非常常见的方法。以下是一个详细的说明和示例代码: ### 使用 XmlDocument 读取 XML 文件 通过 `XmlDocument` 类,可以加载 XML 文件并解析其内容。以下是具体的实现方式[^1]。 ```csharp using System.Xml; using UnityEngine; public class XMLReaderExample : MonoBehaviour { void Start() { // 创建一个新的 XmlDocument 实例 XmlDocument xmlDoc = new XmlDocument(); // 加载 XML 文件(假设文件路径为 "Assets/Resources/TestXml.xml") TextAsset xmlFile = Resources.Load<TextAsset>("TestXml"); if (xmlFile != null) { xmlDoc.LoadXml(xmlFile.text); // 将字符串形式的 XML 内容加载到 XmlDocument 中 } else { Debug.LogError("XML 文件未找到!"); return; } // 获取根节点 XmlNode root = xmlDoc.DocumentElement; // 遍历根节点下的所有子节点 foreach (XmlNode childNode in root.ChildNodes) { // 检查节点名称是否为 "Friend" if (childNode.Name == "Friend") { // 获取子节点中的 "name" 和 "age" 节点 string friendName = childNode["name"]?.InnerText ?? "未知"; string friendAge = childNode["age"]?.InnerText ?? "未知"; // 打印结果 Debug.Log($"朋友姓名: {friendName}, 年龄: {friendAge}"); } } } } ``` ### 解释 - **加载 XML 文件**:可以通过 `Resources.Load` 方法加载存放在 `Resources` 文件夹中的 XML 文件,并将其内容转换为字符串形式。 - **解析 XML 数据**:使用 `XmlDocument.LoadXml` 方法将字符串形式的 XML 数据加载到 `XmlDocument` 对象中。 - **遍历节点**:通过 `foreach` 循环遍历根节点下的所有子节点,并根据节点名称提取所需信息[^2]。 ### 注意事项 - 确保 XML 文件存放在 Unity 的 `Resources` 文件夹中,以便能够通过 `Resources.Load` 方法加载。 - 如果 XML 文件较大或结构复杂,建议使用更高效的解析器如 `XmlReader` 或第三方库(例如 `SimpleXML`)[^3]。 ### 示例输出 假设 XML 文件内容如下: ```xml <Root> <Friend> <name>张三</name> <age>19</age> </Friend> <Friend> <name>李四</name> <age>20</age> </Friend> </Root> ``` 运行上述代码后,控制台将输出: ``` 朋友姓名: 张三, 年龄: 19 朋友姓名: 李四, 年龄: 20 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值