XML 元素值显示为空白

Posted

技术标签:

【中文标题】XML 元素值显示为空白【英文标题】:XML Element values showing up blank 【发布时间】:2017-02-11 10:30:05 【问题描述】:

我正在使用 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>

输出是:

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

如何让它显示正确的值?

更新:我尝试阅读并修改我的代码,我认为出于某种原因,程序似乎认为 x、y 和 z 处的值都是空的,即使我初始化了它们。

【问题讨论】:

【参考方案1】:

要获取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。

【讨论】:

【参考方案2】:

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

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

X.Root.Element("x")

【讨论】:

以上是关于XML 元素值显示为空白的主要内容,如果未能解决你的问题,请参考以下文章

如何在php中取消设置xml元素?

当两个div元素显示为内联块时如何删除它们之间的空白[重复]

SAXParser - 从 XML 元素解码值后,仅获得字符长度 126

将 xml 值绑定为属性或元素

XSLT 将嵌套的 xml 元素写为一个带有逗号分隔值字符串的元素

Jackson 序列化:将字段值设置为 XML 元素名称