2016-10-03 7 views
1

私はXamarinとLINQを使用してファイルからXML要素の値を抽出し、画面に表示しています。XML要素の値が空白になっています

enter image description here

私はエラーまたは例外を得ることはありません: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>

ですしかし、出力thすべての要素のe値が空白になります。

正しい値を表示するにはどうすればよいですか?

更新:コードをもう少し読み直そうとしましたが、何らかの理由でx、yの値が&であると思っていたようです。

答えて

2

あなたはへValueプロパティ

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

やキャストを呼び出すことができますXElementの値を取得するにはタイプ:

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

+0

ありがとう!これは完全に機能しました – Robby

1

Xはあなたのドキュメントです。 Elementは子要素を返します。ドキュメントに含まれる唯一の子要素はrootなので、これらの子要素のいずれも存在しないため、すべてのクエリはnullを返します。

この場合に最も明白な修正がrootElementを呼び出すことです:

X.Root.Element("x") 
関連する問題