WP 8解析XML形式ファイル
14466 ワード
DOTA 2 WebAPIリクエストで返されるフォーマットは、XMLとJSON、デフォルトでJSONの2種類あり、XMLフォーマットを返すにはformat=xmlを付ける必要があります.
ここでは、XML形式を簡単に解析する例を挙げる(その他のXML操作):
解析コードは次のようになります.ストリームストリームをStringに入力すると、上のテキストになります.
説明:
XElement.Load(Stream xml)は、StreamをXElement形式に変換する、その後、そのサブラベルはXElementを用いる.Element(「Name」)が取得する、対応する値はXElementである.Value.
ここでは、XML形式を簡単に解析する例を挙げる(その他のXML操作):
<response>
<players>
<player>
<steamid>76561198092319753</steamid>
<communityvisibilitystate>1</communityvisibilitystate>
<profilestate>1</profilestate>
<personaname> 、Scohura</personaname>
<lastlogoff>1396240726</lastlogoff>
<profileurl>
http://steamcommunity.com/profiles/76561198092319753/
</profileurl>
<avatar>
http://media.steampowered.com/steamcommunity/public/images/avatars/f9/f90a468b223389164861722c599318216b388f18.jpg
</avatar>
<avatarmedium>
http://media.steampowered.com/steamcommunity/public/images/avatars/f9/f90a468b223389164861722c599318216b388f18_medium.jpg
</avatarmedium>
<avatarfull>
http://media.steampowered.com/steamcommunity/public/images/avatars/f9/f90a468b223389164861722c599318216b388f18_full.jpg
</avatarfull>
<personastate>0</personastate>
</player>
</players>
</response>
解析コードは次のようになります.ストリームストリームをStringに入力すると、上のテキストになります.
private void prase(Stream xml)
{
userdata = XElement.Load(xml).Element("players").Element("player");
// 、
username.Text = userdata.Element("personaname").Value;
username.TextTrimming = TextTrimming.WordEllipsis;
username.FontSize = (this.Height - 80)/3;
//
switch (userdata.Element("personastate").Value)
{
case "0":
if (userdata.Element("communityvisibilitystate").Value.Equals("1"))
{
statusText = " ";
}
else
{
statusText = " ";
}
break;
case "1":
statusText = " ";
break;
case "2":
statusText = " ";
break;
case "3":
statusText = " ";
break;
case "4":
statusText = " ";
break;
case "5":
statusText = " ";
break;
case "6":
statusText = " ";
break;
default :break;
}
status.Text = statusText;
status.FontSize = (this.Height - 80) / 3;
//
if (!userdata.Element("personastate").Value.Equals("0"))
{
try
{
extraText = userdata.Element("gameextrainfo").Value + " ";
username.Foreground = new SolidColorBrush(Colors.Green);
status.Foreground = new SolidColorBrush(Colors.Green);
extra.Foreground = new SolidColorBrush(Colors.Green);
}
catch
{
username.Foreground = new SolidColorBrush(Colors.Blue);
status.Foreground = new SolidColorBrush(Colors.Blue);
extra.Foreground = new SolidColorBrush(Colors.Blue);
}
}
else
{
extraText = " :";
username.Foreground = new SolidColorBrush(Colors.Gray);
status.Foreground = new SolidColorBrush(Colors.Gray);
extra.Foreground = new SolidColorBrush(Colors.Gray);
}
extra.Text = extraText;
extra.FontSize = (this.Height - 80) / 3;
//
BitmapImage bitImg = new BitmapImage(new Uri(userdata.Element("avatarfull").Value));
head.Source = bitImg;
}
説明:
XElement.Load(Stream xml)は、StreamをXElement形式に変換する、その後、そのサブラベルはXElementを用いる.Element(「Name」)が取得する、対応する値はXElementである.Value.