我对此一无所知,我有一个内置页面,其中包含一个 gridview 来描述每天输入的数据,这些数据被分成来自不同作者的列,它看起来像一个 excel 文件。底部有一个 Atom 链接。
如果我点击某一行的链接,尤其是帖子的作者,我将被定向到作者的属性页面,其中将有姓名、当前完成的工作以及他的书写了多少 (50/70 80 % called status 等),我想知道如何读取这些信息并将其显示在相关应用程序的另一个 View 中;那就是我只知道提要的 URL,我真的不知道如何做到这一点。感谢您的帮助。
最佳答案
我没有尝试将 DataContractSerializer 与专门的 XML 格式一起使用,但 XmlSerializer 允许您设置什么是属性以及什么是元素。就我而言,这是最简单的方法,因为您可以制作一个漂亮的对象模型并使用它来读取任何 XML。这是一个读取原子提要的部分示例。您将需要执行 HttpWebRequest 以获取 XML(这非常简单),然后使用 XmlSerializer 反序列化提要。
[XmlType(TypeName = "feed", Namespace = "http://www.w3.org/2005/Atom")]
public class Feed
{
[XmlElement(ElementName = "title")]
public string Title { get; set; }
[XmlElement(ElementName = "updated")]
public DateTime? Updated { get; set; }
[XmlElement(ElementName = "id")]
public string Id { get; set; }
[XmlElement(ElementName = "link")]
public Link Link { get; set; }
[XmlElement(ElementName = "entry")]
public List<Entry> Entries { get; set; }
public Feed()
{
Entries = new List<Entry>();
}
}
public class Entry
{
[XmlElement(ElementName = "title")]
public string Title { get; set; }
[XmlElement(ElementName = "updated")]
public DateTime? Updated { get; set; }
[XmlElement(ElementName = "id")]
public string Id { get; set; }
[XmlElement(ElementName = "link")]
public Link Link { get; set; }
[XmlElement(ElementName = "summary")]
public string Summary { get; set; }
}
public class Link
{
[XmlAttribute(AttributeName = "href")]
public string Href { get; set; }
}
这是一个编写/读取提要的工作示例:
class Program
{
static void Main(string[] args)
{
Feed feed = new Feed();
feed.Title = "Exmple Feed";
feed.Updated = DateTime.Now;
feed.Link = new Link { Href = "http://example.org/" };
feed.Entries.Add(
new Entry
{
Title = "Atom-Powered Robots Run Amok",
Link = new Link { Href = "http://example.org/2003/12/13/atom03" },
Updated = DateTime.Now,
Summary = "Some text."
});
XmlSerializer serializer = new XmlSerializer(typeof(Feed), "http://www.w3.org/2005/Atom");
using (StreamWriter sw = new StreamWriter("c:\\testatom.xml"))
{
serializer.Serialize(sw, feed);
}
using (StreamReader sr = new StreamReader("c:\\testatom.xml"))
{
Feed readFeed = serializer.Deserialize(sr) as Feed;
}
}
}
关于c# - 用C#读取Atom xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9332681/