對於我的web服務組件,我需要根據許多因素生成一個相對較大的XML(〜500行)。我在這裏面對幾個不同的選擇: 1. StringBuilder 2. XmlWriter類 3.帶序列化的C#對象???什麼是爲Web服務生成動態XML的最佳方式?
我應該使用哪一個。有沒有其他方法我不知道?
對於我的web服務組件,我需要根據許多因素生成一個相對較大的XML(〜500行)。我在這裏面對幾個不同的選擇: 1. StringBuilder 2. XmlWriter類 3.帶序列化的C#對象???什麼是爲Web服務生成動態XML的最佳方式?
我應該使用哪一個。有沒有其他方法我不知道?
如果用數據庫中的數據填充XML,可以使用SQL查詢生成整個XML,並使用屬性創建一個類來保存XML blob 。屬性類型可以是XElement。這是我能想到的最簡單的方法。
我非常簡單地使用LINQ to XML生成RSS源。這是我所知道的最好的XML API,說實話。
我有AA情侶的擴展方法,我用它來使其更容易 - 它來自一個匿名類型轉換成元素或者屬性:
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的東西很不錯。