【问题标题】:What's the Best way to Generate a Dynamic XML for Web Service?为 Web 服务生成动态 XML 的最佳方式是什么?
【发布时间】:2008-10-28 20:46:14
【问题描述】:

对于我的 Web 服务组件,我需要根据许多因素生成一个相对较大的 XML(~500 行)。我在这里面临几个不同的选择: 1. 字符串生成器 2.XmlWriter类 3. 带有序列化的C#对象???

我应该使用哪一个。还有其他我不知道的方法吗?

【问题讨论】:

    标签: c# .net xml


    【解决方案1】:

    如果您使用数据库中的数据填充 XML,您可以使用 SQL 查询生成整个 XML,并创建一个具有包含 XML blob 的属性的类。属性类型可以是 XElement。这是我能想到的最简单的。

    【讨论】:

      【解决方案2】:

      我使用 LINQ to XML 非常简单地生成了一个 RSS 提要。老实说,这是我所知道的最好的 XML API。

      我有几个扩展方法,我用它们使它更容易 - 它从匿名类型转换为元素或属性:

        public static IEnumerable<XElement> AsXElements(this object source)
        {
            foreach (PropertyInfo prop in source.GetType().GetProperties())
            {
                object value = prop.GetValue(source, null);
                yield return new XElement(prop.Name.Replace("_", "-"), value);
            }
        }
      
        public static IEnumerable<XAttribute> AsXAttributes(this object source)
        {
            foreach (PropertyInfo prop in source.GetType().GetProperties())
            {
                object value = prop.GetValue(source, null);
                yield return new XAttribute(prop.Name.Replace("_", "-"), value ?? "");
            }
        }
      

      这可能根本不适合你,但我觉得它真的很方便。当然,这假设您使用的是 .NET 3.5...

      【讨论】:

        【解决方案3】:

        需要更多信息,但我不会使用对象序列化。它非常死板并且隐藏了太多的实现。特别是当您自己的应用程序以外的其他人使用时。我也不会使用 StringBuilder ,因为突然之间您正在处理内容的转义并自己完成所有困难且容易出错的工作。

        对于低级别的东西,XmlWriter 是一个不错的选择。如果你是临清,那XElement的东西就不错了。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-11-04
          • 1970-01-01
          • 2015-09-22
          • 1970-01-01
          • 1970-01-01
          • 2016-01-04
          • 1970-01-01
          • 2011-01-17
          相关资源
          最近更新 更多