2013-06-03 56 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> 
    <Camera_Name Name="Camera"> 
     <CameraTag Tag="Camera Tag" /> 
     <LocalPosition X="354" Y="108" Z="Z Local Position" /> 
     <Far Far="98" /> 
     <Near Near="16" /> 
     <FOV FOV="78" /> 
     <AspectRatio AspectRatio="1" /> 
     <ScreenDistance ScreenDistance="2" /> 
    </Camera_Name> 
    </Display_Settings> 
</Settings> 

我想要的就是訪問存儲在我的本地位置節點中的屬性值。我得到了一些幫助,這一點,我可以用這個代碼訪問屏幕局部位置屬性值:

var xdoc = XDocument.Load("C:\\Test.xml"); 
    int x = int)xdoc.Descendants("LocalPosition").First().Attribute("X"); 

這愉快地返回12,當我調試。但是,我也想讓我的相機在當地的地位也被淘汰出局。

有人可以告訴我如何做到這一點?

+0

這將有助於 http://stackoverflow.com/questions/752271/how-to-get-xml-node-from-的XDocument –

回答

1

可以使用Descendants搶攝像機和屏幕位置,然後用Attribute訪問它的組件。代碼的例子如下:

var cameraPosition = xdoc.Descendants("Camera_Name") 
         .First() 
         .Element("LocalPosition"); 

var screenPosition = xdoc.Descendants("Screen") 
         .First() 
         .Element("LocalPosition"); 


//parsing and displaying data 
int cameraX = int.Parse(cameraPosition.Attribute("X").Value); 
int cameraY = int.Parse(cameraPosition.Attribute("Y").Value); 
Console.WriteLine ("camera pos: X={0}; Y={1}", cameraX, cameraY); 

int screenX = int.Parse(screenPosition.Attribute("X").Value); 
int screenY = int.Parse(screenPosition.Attribute("Y").Value); 
Console.WriteLine ("screen pos: X={0}; Y={1}", screenX, screenY); 

打印:

screen pos: X=12; Y=81 
camera pos: X=354; Y=108 
相關問題