代码之家  ›  专栏  ›  技术社区  ›  Haoest

为Web服务生成动态XML的最佳方法是什么?

  •  2
  • Haoest  · 技术社区  · 16 年前

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

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

    3 回复  |  直到 13 年前
        1
  •  2
  •   Ray Lu    16 年前

    如果用数据库中的数据填充XML,则可以使用SQL查询生成整个XML,并创建一个包含XML blob的属性的类。属性类型不能为Xelement。这是我最容易想到的。

        2
  •  1
  •   Jon Skeet    16 年前

    我非常简单地使用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
  •  0
  •   Keltex    16 年前

    需要更多信息,但我不会使用对象序列化。它非常严格,隐藏了太多的实现。尤其是当被你自己的应用程序以外的人消费时。我也不会使用StringBuilder,因为突然间,您就可以处理内容的转义,并自己完成所有困难且容易出错的工作。

    对于低级的东西,xmlwriter是一个很好的方法。如果你是临清,那么Xelement的东西很不错。