XML元素值显示空白

时间:2016-10-03 12:58:44

标签: c# android xml linq xamarin

我正在使用Xamarin和LINQ从文件中提取XML元素的值并将其显示在屏幕上。 C#程序是

Button b = (Button)FindViewById<Button>(Resource.Id.button);

    TextView t = (TextView)FindViewById<TextView>(Resource.Id.textView);

    XDocument X = XDocument.Load(Assets.Open("DataDump.xml"));

    XElement nodex = X.Element("x");
    XElement nodey = X.Element("y");
    XElement nodez = X.Element("z");
    XElement noder = X.Element("RightClick");
    XElement nodel = X.Element("LeftClick");

    b.Click += (object sender, EventArgs e) =>
    {


        t.Text = string.Format(" x={0}\n y={1}\n z={2}", nodex, nodey, nodez);
    };

XML文件是

<?xml version="1.0" encoding="utf-8" ?>
<root>
  <x>0.214</x>
  <y>0.396</y>
  <z>9.842</z>
  <LeftClick>1</LeftClick>
  <RightClick>0</RightClick>
</root>

输出结果为:

enter image description here

我没有收到任何错误或异常,但在输出中,所有元素的值都显示为空白。

如何让它显示正确的值?

更新:我试图阅读并修改我的代码更多,我认为由于某种原因,程序似乎认为x,y和amp;的值。 z都是null,即使我初始化它们。

2 个答案:

答案 0 :(得分:2)

要获取XElement的值,您可以调用Value属性

var nodex = X.Root.Element("x").Value;

或强制转换为值的类型:

var nodex = (decimal)X.Root.Element("x");

如果您使用XElement.Load方法加载xml,您将直接加载文档的根元素,因此,您可以在帖子中尝试使用这些子项:

XElement X= XElement.Load(Assets.Open("DataDump.xml"));
var nodex = X.Element("x").Value;
//...

有关此主题的详细信息,请查看此link

答案 1 :(得分:1)

X是您的文件。 Element返回子元素。您的文档唯一的子元素是root - 所以您的所有查询都将返回null,因为这些子元素都不存在。

在这种情况下,最明显的解决方法是在Element上致电root

X.Root.Element("x")