1

これと同じ問題を抱えた記事が見つからないようです。

次のような XML ファイルがあります。

<user id="" name="" termsofuse="http://boardgamegeek.com/xmlapi/termsofuse">
<firstname value="" /> 
<lastname value="" /> 
<avatarlink value="N/A" /> 
<yearregistered value="" /> 
<lastlogin value="2012-10-04" /> 
<stateorprovince value="" /> 
<country value="" /> 
<webaddress value="" /> 
<xboxaccount value="" /> 
<wiiaccount value="" /> 
<psnaccount value="" /> 
<battlenetaccount value="" /> 
<steamaccount value="" /> 
<traderating value="363" /> 
</user>

そして、次のコードを使用してデータを抽出しています。

static string QueryTheData(XDocument doc)
{
  var data = from item in doc.Descendants("user")
             select new
             {
               avatarlink = item.Element("avatarlink").Value,
               lastlogin = item.Element("lastlogin").Value,
             };
  var t = "";
  foreach (var p in data)
    t += p.ToString();
  return t;
}

しかし、返された値は null です。XMLファイルが始まるためかどうか疑問に思っています:

<user id="" name="" termsofuse="http://boardgamegeek.com/xmlapi/termsofuse">

私が見つけたすべての例で、XML は次のように始まります。

<user> ... etc

これらの値をこの形式で読み取るにはどうすればよいですか?

4

2 に答える 2

3

属性の値を取得したいvalue。これを試して

avatarlink = item.Element("avatarlink").Attribute("value").Value

しかし、私はこのように行きます

var list = doc.Descendants("user")
        .Select(u=>u.Elements().ToDictionary(e=>e.Name.LocalName,e=>e.Attribute("value").Value))
        .ToList();

最終リストのすべての項目には、要素とその値の辞書が含まれています

var lastlogin = list[0]["lastlogin"];
于 2012-10-05T12:03:35.780 に答える
2

Value 属性はノードの値を読み取っています。おそらく次のようなものを探しています。

(string)item.Element("avatarlink").Attribute("value")
于 2012-10-05T12:02:39.400 に答える