繁体   English   中英

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

[英]What's the Best way to Generate a Dynamic XML for Web Service?

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM