无法获取XML属性

时间:2017-02-21 23:59:25

标签: c# xml

我有一个我试图用C#读取的XML文件 我已经能够做很多事情,但我遇到了一个特定的问题。

这是XML文件:

<map version="1.0" orientation="orthogonal" renderorder="right-down" width="60" height="40" tilewidth="16" tileheight="16" nextobjectid="4" source="test.png">
  <tileset firstgid="1" name="test" tilewidth="16" tileheight="16" tilecount="240" columns="24">
    <image source="../test.png" trans="ffaec9" width="388" height="163"/>
  </tileset>
</map>

我在尝试获取时遇到一些困难的属性都在<image>标记中。我需要sourcewidth

我使用

在地图中但不在图像中的数据
tileSize = int.Parse(doc.DocumentElement.GetAttribute("tilewidth"));

如何从source获取width<image>

2 个答案:

答案 0 :(得分:1)

您可以轻松使用Linq和XDocument&amp; XElement获取您需要的值:

var xDoc = XDocument.Parse("<my xml/>");
var tileset = xDoc.Element("map").Element("tileset");
var image = tileset.Element("image");

var tileWidth = int.Parse(tileset.Attribute("tilewidth").Value);
var source= image.Attribute("source").Value;
var width = int.Parse(image.Attribute("width").Value);

答案 1 :(得分:0)

您可以查看XPath。以下是一些示例和online demo

string source = doc.SelectSingleNode("/map/tileset/image/@source").Value; // "../test.png"
string width  = doc.SelectSingleNode("//image/@width").Value;             // "388"
string height = doc.SelectSingleNode("//@height[last()]").Value;          // "40"