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

时间:2008-10-28 20:46:14

标签: c# .net xml

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

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

我使用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 ...

答案 2 :(得分:0)

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

对于低级别的东西,XmlWriter是一个很好的方法。如果你是临清,那么XElement的东西非常好。