2013-06-03 2 views
0

Моего XML выглядит следующим образом:Чтение XML узла значений атрибутов из узлов с тем же именем

<Settings> 
    <Display_Settings> 
    <Screen> 
     <Name Name="Screen" /> 
     <ScreenTag Tag="Screen Tag" /> 
     <LocalPosition X="12" Y="81" Z="28" /> 
     <Width Width="54" /> 
     <Height Height="912" /> 
    </Screen> 
    <Screen> 
     <Name Name="Screen" /> 
     <ScreenTag Tag="Screen Tag" /> 
     <LocalPosition X="32" Y="21" Z="28" /> 
     <Width Width="54" /> 
     <Height Height="912" /> 
    </Screen> 
    </Display_Settings> 
</Settings> 

Как я умею читать в двух различных значениях локальных атрибутов Позиции X из двух различных узлов, которые имеют те же имя?

Редактировать

К сожалению, забыл добавить код у меня в тот момент, который читает в особой локальной позиции, значение атрибута с одного узла экрана:

var xdoc = XDocument.Load("C:\\Test.xml"); 
var screenPosition = xdoc.Descendants("Screen").First().Element("LocalPosition"); 
int screenX1 = int.Parse(screenPosition1.Attribute("X").Value); 
+0

XPath для извлечения всех узлов LocalPosition, чтения атрибутов и родительский узел, если вам нужен доступ к узлу экрана (например, для чтения узла Name). –

ответ

2

XPath будет выглядеть следующим образом:

/Settings/Display_Settings/Screen/LocalPosition/@X 

Вы можете использовать онлайн-инструмент, как это: http://www.freeformatter.com/xpath-tester.html#ad-output проверить свои XPath-х. Кроме того, есть хороший учебник здесь: http://www.w3schools.com/xpath/

Как долго, так как вопрос был обновлен, код:

var xdoc = XDocument.Load(@"C:\darbai_test\so_Test.xml"); 
var screenPosition = xdoc 
     .Descendants("Screen") 
     .Descendants("LocalPosition") 
     .Attributes("X"); 

foreach (var xAttribute in screenPosition) 
{ 
    Console.WriteLine(xAttribute.Value); 
} 

Console.ReadKey(); 
Смежные вопросы