[英]Reading XML attributes and text
我正在開發Windows Phone 7.5應用程序,我迷路了。
我必須閱讀以下xml:
<?xml version="1.0" encoding="utf-8" ?>
<cards>
<card id ="0">
<name lang="en">Mad</name>
<description lang="en">This...</description>
</card>
...
</cards>
而且我必須完成這段代碼:
private void UpdateCardDescriptions(int[] numbers, string lang)
{
for (int i = 0; i < numbers.Length; i++)
{
XmlReader reader = XmlReader.Create("Data/CardDescriptions.xml");
reader.MoveToContent();
while (reader.Read())
{
if ((reader.NodeType == XmlNodeType.Element) &&
(reader.Name == "card") &&
(reader.GetAttribute("id").Equals(numbers[i].ToString())))
{
string description = string.Empty;
while (reader.Read())
{
}
switch (i)
{
case 0:
Card01Desc.Text = description;
break;
case 1:
Card02Desc.Text = description;
break;
case 2:
Card03Desc.Text = description;
break;
}
}
if (reader.NodeType == XmlNodeType.EndElement && reader.Name == "cards")
{
break;
}
}
reader.Close();
}
}
我必須完成以下代碼:
while (reader.Read())
{
}
如果我正在尋找語言 (lang)的描述,以獲取具有ID的卡片。 如何獲得相同語言lang的相應描述。
對不起,我被阻止了。
有一種更優雅的方法:
XElement xmlCards = XElement.Parse(e.Result);
var cards = from card in xmlCards.Descendants("card")
select new CardItem
{
ID = card.Attribute("id").Value,
Name = card.Element("name").Value,
Desciption = card.Element("description").Value
};
現在,“卡片”將包含您的所有卡片
(CardItem只是您的卡實施)
您是否使用過XElement
,它很容易且Windows Phone SDK廣泛支持。
private void UpdateCardDescriptions(int[] numbers, string lang)
{
XElement xe = XElement.Load(yourXml);
Control[] controls = new[] { Card01Desc, Card02Desc, Card03Desc };
foreach(var number in numbers)
{
var card = xe.Desendants("card").Where(c => c.Attribute("id").Value == number)
.First();
((YourControlType)controls[number]).Text = card.Desendants("description")
.Where(c => c.Attribute("lang").Value == lang)
.First()
.Value;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.