我正在开发一个统一游戏,想要在统一脚本中解析XML文件, 我的文件以
行开头<map version="1.0" orientation="orthogonal" width="16" height="12" tilewidth="64" tileheight="64">
我希望得到地图宽度属性
我的代码是:
var mapWidth = ((IEnumerable)tiledMapXmlRoot.XPathEvaluate("/@width")).Cast<XAttribute>().Select(a => Int32.Parse(a.Value)).First();
当我在visual studio中测试时它正常工作,但是当它在统一脚本中运行时失败, 调试时我可以看到它失败,因为 XPathEvaluate 返回一个类型为 System.Xml.XPath.SimpleSlashIterator
的空集合在visual studio中,返回的类型是 System.Xml.XPath.XPathEvaluator.EvaluateIterator ,它是一个包含预期元素的集合
相同的代码如何在两种环境中以不同的方式工作? 我查看了System.Xml.Linq的版本,在visual studio中它的4.0.0.0,而在Unity(monodevelop脚本编辑器)中它是3.5.0.0,但查看库文档,代码应该仍然有用
答案 0 :(得分:0)
/@width
都不会返回任何内容。它选择文档节点的width属性(称为&#34;根节点&#34;在XPath 1.0中),文档节点没有属性。返回此表达式结果的任何XPath处理器都不符合要求。正确的表达式是/*/@width
,它返回文档中最外层元素的width属性。