c# - 用C#读取Atom xml

标签 c# asp.net-mvc asp.net-mvc-3

我对此一无所知,我有一个内置页面,其中包含一个 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/

相关文章:

c# - 在 asp.net 中创建日期时间选择器

c# - 如何在 ASP.NET Core 中设置默认区域?

c# - 具有 1 个发布者和 4 个并行消费者的 Disruptor 示例

c# - 玻璃映射器 : InferType is ignored when querying the SitecoreContext

asp.net-mvc - 从 MVC Controller 返回 Json 数据

asp.net-mvc-3 - 使用.SetValidator()时,FluentValidation.Net不会产生客户端非侵入式验证

c# - 如何使用 Entity Framework Code-First 方法将 double[] 数组存储到数据库

c# - 为什么发布后日期格式不对?

c# - 在读取带有子对象列表的对象时,需要一个无参数的默认构造函数来允许 dapper 实现错误

asp.net-mvc-3 - 单元测试一个文件上传,怎么样?