2013-06-03 228 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節點,讀取屬性和使用父節點,如果你需要訪問屏幕節點(例如讀取名稱節點)。 –

回答

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(); 
相關問題