2017-02-21 15 views
0

У меня есть файл 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> теге. Мне нужны source и width.

I данные в карте, но не в изображении с помощью

tileSize = int.Parse(doc.DocumentElement.GetAttribute("tilewidth")); 

Как я могу получить source и width от <image>?

+0

Я добавил закрывающий '' тег в XML, чтобы сделать ваш XML хорошо сформированы. – zx485

ответ

1

Вы можете легко использовать Linq и XDocument & 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); 
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"