簡體   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