0

首先,我很抱歉这个名字。我想不出一种方法来以问题的形式描述我的问题。但这就是我想要做的。

这是我的 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。但是,我也希望我的相机本地位置也能输出。

有人可以告诉我如何做到这一点吗?

4

2 回答 2

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
于 2013-06-03T09:51:42.407 回答
0

如果您使用 XPath,您可以定位节点并将它们检索到迭代器中。

http://msdn.microsoft.com/en-us/library/0ea193ac.aspx

于 2013-06-03T09:49:47.200 回答