2
ServiceStack.Text是否可以縮進它的xml輸出,所以它不是一個長長的xml行?我們希望將輸出寫入易於閱讀的文本文件。ServiceStack.Text xml序列化格式良好的輸出
ServiceStack.Text是否可以縮進它的xml輸出,所以它不是一個長長的xml行?我們希望將輸出寫入易於閱讀的文本文件。ServiceStack.Text xml序列化格式良好的輸出
你使用的是任何一種編碼。因爲默認情況下,當你序列化你的對象時,不會發生任何縮進剝離。嘗試下面的代碼。
你的XML類對象
public class MyXMLClass
{
[XmlElement]
public string[] Property1 { get; set; }
[XmlElement]
public string[] Property2 { get; set; }
}
Serialize方法
static void TestXMLWithIndent()
{
var x = new MyXMLClass()
{
Property1 = new string[] { "TestProp11", "TestProp12", "TestProp13" },
Property2 = new string[] { "TestProp21", "TestProp22", "TestProp23" }
};
var filename = @"c:\temp\testxmlWithIndent.oxi";
using (TextWriter textWriter = new StreamWriter(filename))
{
XmlSerializer serializer = new XmlSerializer(typeof(MyXMLClass));
serializer.Serialize(textWriter, x);
textWriter.Close();
}
}
此代碼產生正確的縮進。而下面的代碼會生成沒有縮進的xml文件,如您所述。請注意,當我使用xmltextwriter時,我必須使用編碼。
static void XmlWithNoIndent()
{
var x = new MyXMLClass()
{
Property1 = new string[] { "TestProp11", "TestProp12", "TestProp13" },
Property2 = new string[] { "TestProp21", "TestProp22", "TestProp23" }
};
var filename = @"c:\temp\testxmlWithNoIndent.oxi";
using (MemoryStream memoryStream = new MemoryStream())
{
using (var xmlTextWriter = new System.Xml.XmlTextWriter(memoryStream, Encoding.Unicode))
{
XmlSerializer xs = new XmlSerializer(typeof(MyXMLClass));
xs.Serialize(xmlTextWriter, x);
MemoryStream memoryBaseStream;
memoryBaseStream = (MemoryStream)xmlTextWriter.BaseStream;
UTF8Encoding encoding = new UTF8Encoding();
File.WriteAllBytes(filename, memoryStream.ToArray());
memoryBaseStream.Dispose();
xmlTextWriter.Close();
memoryStream.Close();
}
}
}
我不建議額外的數據是好的或可讀的數據,那麼爲什麼不使用XSLT? – 2013-06-27 16:07:33