从具有相同数据的两个XML节点获取属性值
本文关键字:XML 两个 节点 获取 属性 数据 | 更新日期: 2023-09-27 18:16:52
首先,我为这个名字感到抱歉。我想不出用问题的形式来描述我的问题。但这就是我想做的。
我的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。但是,我也想把我的相机局部位置放出来。
谁能告诉我怎么做这个?您可以使用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
如果使用XPath,可以定位节点并将它们检索到迭代器中。
http://msdn.microsoft.com/en-us/library/0ea193ac.aspx