使用WWW获取本地文件夹的XML配置文件

Unity3D读取本地文件可以使用Resources.Load来读取放在Resources文件夹下的文件,如果不是放在该文件夹下,则可以通过WWW类来读取。

譬如读取xml的配置文件。

/// <summary>
    /// 读取颜色配置
    /// </summary>
    /// <returns></returns>
    public List<Color> GetColorXml()
    {
        string xmlPath = Application.dataPath + @"/Configs/Config.xml";
        List<Color> colorList = new List<Color>();
        if (File.Exists(xmlPath))
        {
            XmlDocument xmlDoc = new XmlDocument();
            WWW www = new WWW("file:// " + xmlPath);
            while (true)
            {
                if (www.isDone)
                {
                    System.IO.StringReader stringReader = new System.IO.StringReader(www.text);
                    stringReader.Read(); // skip BOM
                    xmlDoc.LoadXml(stringReader.ReadToEnd());
                    //xmlDoc.LoadXml(www.text);
                    break;
                }
            }

            //xmlDoc.Load(xmlPath);
            XmlNodeList nodeList = xmlDoc.SelectSingleNode("Config/ColorConfig").ChildNodes;

            //遍历每一个节点,拿节点的属性以及节点的内容
            foreach (XmlElement xe in nodeList)
            {
                //Debug.Log("Attribute :" + xe.GetAttribute("id"));
                //Debug.Log("NAME :" + xe.Name);
                if (xe.Name != "Color")
                {
                    continue;
                }

                Color c1 = new Color();
                foreach (XmlElement x1 in xe.ChildNodes)
                {
                    if (x1.Name == "r")
                    {
                        float.TryParse(x1.InnerText, out c1.r);
                        c1.r = c1.r > 1f ? c1.r / 255f : c1.r;
                    }
                    if (x1.Name == "g")
                    {
                        float.TryParse(x1.InnerText, out c1.g);
                        c1.g = c1.g > 1f ? c1.g / 255f : c1.g;
                    }
                    if (x1.Name == "b")
                    {
                        float.TryParse(x1.InnerText, out c1.b);
                        c1.b = c1.b > 1f ? c1.b / 255f : c1.b;
                    }
                    if (x1.Name == "a")
                    {
                        float.TryParse(x1.InnerText, out c1.a);
                        c1.a = c1.a > 1f ? c1.a / 255f : c1.a;
                    }
                }
                colorList.Add(c1);
            }

        }
        return colorList;

    }

如果读取的xml文件有问题,可能是编码格式引起的,可以使用StringReader来读取代替www.text

xml相关问题参考:http://answers.unity3d.com/questions/10904/xmlexception-text-node-canot-appear-in-this-state.html

时间: 2024-08-03 15:19:36

使用WWW获取本地文件夹的XML配置文件的相关文章

java+js实现展示本地文件夹下的所有图片demo

java+js实现展示本地文件夹下的所有图片demo 最近项目遇到需要实现前端通过一个按钮点击事件,弹窗浏览本地文件夹下的所有图片: 思路: - 获取到所需展示图片的本地文件夹内所有图片的文件绝对路径名称(路径+图片名称.格式名称) - 由于图片过大,对图片进行按比例压缩再展示 - 在前端展示图片 - (前端各式各样的展示--) 第一步:获取本地文件夹中的所有图片路径 java代码: package com.giscafer.common; import java.io.File; import

git中使用命令将远程仓库拉取项目在本地文件夹

在有些时候,我们往往从github或者gitlab或者coding上面直接下载项目下来运行,但是这种情况往往没有使用git远程拉取来的安全(或者叫装逼), 所以这里我以gitLab为例子,说一下如何将远程服务器上的代码拉取到本地   首先,你得安装好git的软件 可以从网上获取 安装教程点击链接:git安装教程 安装好后,打开你的远程仓库的网站,当然你得发现你的项目组或者找到开源项目的东东 比如我的 gitlab: 然后随便打开一个项目,复制SSH链接:   接下来就可以开始在黑框里面搞了: 打

解决无法更改本地文件夹与 TFS 项目之间映射的问题

问 题说明:更换了一台新的 TFS 服务器,旧的 TFS 服务器停止使用.但从客户端 VS2008 连接到新的服务器,并下载源码到本地原来工作的文件夹时,出现错误提示,说本地文件夹已被映射到了旧的服务器上,不能从新服务器获取源码.通过源代码管理 -工作区管理,把跟旧服务器相关的所有工作区项都删掉后,仍出现此提示. 解决办法:在文件 C:\Documents and Settings\当前用户\Local Settings\Application Data\Microsoft\Team Found

python 脚本(获取指定文件夹、指定文件格式、的代码行数、注释行数)

1.代码的运行结果: 获取 指定文件夹下.指定文件格式 文件的: 总代码行数.总注释行数(需指定注释格式).总空行数: 1 #coding: utf-8 2 import os, re 3 4 # 代码所在目录 5 FILE_PATH = './' 6 7 def analyze_code(codefilesource): 8 ''' 9 打开一个py文件,统计其中的代码行数,包括空行和注释 10 返回含该文件总行数,注释行数,空行数的列表 11 ''' 12 total_line = 0 13

windows映射到本地文件夹中,打开程序

windows映射到本地文件夹中,打开程序,是在调用本地程序执行,如果不能删除或修改,是本地程序占用,关闭本地程序即可 实例: 在ubuntu上映射出来的一个文件夹,直接双击了jar文件,实质是调用本地的Java(TM) Platform SE binary程序,找到本地进程javaw,结束掉即可,跟远程 程序 操作 进程无关

获取某文件夹下所有文件名、文件夹名、后缀名

今天在提交github时,突然觉得提交得很慢,想到github允许设置.gitignore文件进行某些后缀名的忽略,于是乎决定好好设置一下.gitimnore. 于是乎....我发现,一个很大的项目,或者一个很杂乱的文件库,很难知道这里面到底存在哪些后缀名的文件,一个文件夹一个文件夹的找又太慢,而且容易出错. 于是乎....我开始敲代码了,顺带着把获取某文件夹下所有文件名.文件夹名.后缀名这三个功能一起实现了. [来看效果] 不输入参数时或者第一个参数输入"\"时,默认为当前目录,显示

获取iOS文件夹大小

提供一种获取iOS文件夹大小的方法.没有使用对文件夹内的文件枚举与文件大小字节数的累加. NSURL *cacheDirectory = [[NSFileManager defaultManager] URLForDirectory:NSCachesDirectory inDomain:NSUserDomainMaskappropriateForURL:nil create:NO error:nil]; NSDictionary *attributes = [[NSFileManager def

VC 获取指定文件夹路径的方法小结

VC获取指定文件夹路径 flyfish  2010-3-5 一 使用Shell函数 1 获取应用程序的安装路径 TCHAR buf[_MAX_PATH];SHGetSpecialFolderPath(NULL,buf,CSIDL_PROGRAM_FILES,NULL);AfxMessageBox(buf); 2 获取应用程序数据路径的文件夹 TCHAR bufApplicateData[_MAX_PATH];SHGetSpecialFolderPath(NULL,bufApplicateData

VBA获取某文件夹下所有文件和子文件目录的文件

<strong>VBA获取某文件夹下所有文件,或子文件目录的文件</strong> '------------------------------------------- '获取某文件夹下的所有Excel文件 '------------------------------------------- Sub getExcelFile(sFolderPath As String) On Error Resume Next Dim f As String Dim file() As S