博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity3d XmlException: Text node cannot appear in this state的方案
阅读量:7172 次
发布时间:2019-06-29

本文共 1303 字,大约阅读时间需要 4 分钟。

这个问题是utf-8编码的问题,如果是utf-8+bom那么就会出现这种问题,如果是单纯的utf-8就没有这种问题(当然如果你把他完全变成ansi,那也行) 

我在读写xml的时候遇到这个问题。查了好久在老外的一个网上看到了解决的方法。还有我自己总结的一些方法。 
    public bool LoadXml(string xmlFile) 
    { 
        if (xmlDocument == null) 
        { 
            throw new ArgumentNullException("xmlDocument"); 
        } 
        if (xmlFile == null || xmlFile.Length == 0) 
        { 
            throw new ArgumentNullException("xmlFile"); 
        } 
// Debug.Log(xmlFile); 
// TextReader tr = new StringReader(xmlFile); 
//        xmlDocument.Load(tr); 
  
 System.IO.StringReader stringReader = new System.IO.StringReader(xmlFile); 
 stringReader.Read(); // 跳过 BOM 
 System.Xml.XmlReader reader = System.Xml.XmlReader.Create(stringReader); 
 xmlDocument.LoadXml(stringReader.ReadToEnd()); 
        return true; 
  
    } 
这个是bom的解释网上很多,我不解释了 
这是一个自己写的导入xml的方法,注释的部分是我一开始使用的方法,没有注释的部分是我修改过的。这样你在读取xml的时候就可以跳过bom了. 
如果你不需要发布为网页形式,那么还有一种方法也可以起到这样的效果,那就是重新写一下xml,彻底改变它的编码方式让其不带bom 
代码如下: 
 Encoding utf8NoBom = new UTF8Encoding(false); 
 string fileString = File.ReadAllText(writeUrl,utf8NoBom); 
 File.WriteAllText(writeUrl,fileString,utf8NoBom); 
注意你需要使用几个命名空间 
using System.Xml; 
using System.Text; 
using System; 
using System.IO; 
当然有时候你会发现unity虽然你写了命名空间但是有些类你还是找不到,那么你要到网上下专门的动态库(dll)放到Plugins文件夹下,当然有些读写本地文件的类在发布为网页形式的时候你是不能够使用的。 
最后还有一点,你使用了上面的方法以后一定记住把你的xml文件的编码改为utf-8+bom这种格式,因为我们这个是对bom格式的读取。 
还有一些其他的小方法你用其他编辑软件改为utf-8不带bom的有时候也能解决,但当你改完后,还不能解决的时候,上面的方法对你也许有帮助

转载地址:http://kmbzm.baihongyu.com/

你可能感兴趣的文章
java反射调用方法
查看>>
***使用Fiddler进行IOS APP的HTTP抓包
查看>>
ConcurrentHashMap总结
查看>>
uboot arp地址解析
查看>>
gem5: 使用ruby memory system中的mesh结构 出现AssertionError错误
查看>>
leetcode:Binary Tree Paths
查看>>
ubuntu-Linux下如何安装Tensorflow?
查看>>
关于1KB病毒的清除
查看>>
BZOJ 4318: OSU!
查看>>
【算法系列】之递归算法
查看>>
Android获取wifi MAC,关闭的wifi不能获取
查看>>
《Android源代码设计模式解析与实战》读书笔记
查看>>
c# CacheManager 缓存管理
查看>>
LeetCode - 463. Island Perimeter
查看>>
Jquery—Jquery中的(function($){...})(jQuery)
查看>>
写给大家看的编程规范
查看>>
Android Studio “懒人”必备插件android layout id converter
查看>>
SQL语句:Group By总结
查看>>
Java字节码 小结
查看>>
sed 替换多个空格为一个
查看>>