【发布时间】:2013-03-18 15:31:31
【问题描述】:
我正在尝试开发一个 Windows phone 8 应用程序(我是 wp8 开发的新手)。
我有一个如下所示的 XML 文件:
<?xml version="1.0" ?>
<root>
<quotes>
<quote>
<author></author>
<text></text>
<text></text>
<text></text>
</quote>
</quotes>
</root>
这是我的 Quotes 课程:
[XmlRoot("root")]
public class Quotes
{
[XmlArray("quotes")]
[XmlArrayItem("quote")]
public ObservableCollection<Quote> Collection { get; set; }
}
这是引用类:
public class Quote
{
[XmlElement("author")]
public string author { get; set; }
[XmlElement("text")]
public string text { get; set; }
}
然后我用这段代码反序列化它:
XmlSerializer serializer = new XmlSerializer(typeof(Quotes));
XDocument document = XDocument.Parse(e.Result);
Quotes quotes = (Quotes) serializer.Deserialize(document.CreateReader());
quotesList.ItemsSource = quotes.Collection;
// selected Quote
Quote quote;
public QuotePage()
{
InitializeComponent();
// get selected quote from App Class
var app = App.Current as App;
quote = app.selectedQuote;
// show quote details in page
author.Text = quote.author;
text.Text = quote.text;
}
这在每个具有这种结构的提要中都可以正常工作,其中包含一个 <text> 部分。但是我有很多<text>
如果我使用上面的 C# 代码,则只解析第一个 <text> 部分,其他部分将被忽略。我需要为单个 XML 提要中的每个 <text> 部分创建单独的 List 或 ObservableCollection。
【问题讨论】:
-
“这在每个具有这种结构的提要中都可以正常工作” - 你的意思是你有多个引号部分吗?
-
显示
Quote类代码。 -
如果您创建一个具有您喜欢的结构的类并进行序列化会更容易。因此,该字符串将是您的 xml 所需要的。
-
Hassan 我有很多引号部分......只有当我有一个文本标签时,此代码才有效......谢谢
-
@user1931853 你只有一个属性(getter setter)可以带你文本标签。
标签: c# xml windows windows-phone-7 deserialization