C# 用XmlWriter编写格式化XML

C# 用XmlWriter编写格式化XML,c#,xml,windows-phone-7,xmlwriter,xml-formatting,C#,Xml,Windows Phone 7,Xmlwriter,Xml Formatting,我正在尝试将XML文件写入隔离存储,但我希望将其格式化为以下格式:- <SampleData> <Item Property1="AliquaXX" /> <Item Property1="Integer" /> <Item Property1="Quisque" /> <Item Property1="Aenean" /> <Item Property1="Mauris" /> <Item P

我正在尝试将XML文件写入隔离存储,但我希望将其格式化为以下格式:-

<SampleData>
  <Item Property1="AliquaXX" />
  <Item Property1="Integer" />
  <Item Property1="Quisque" />
  <Item Property1="Aenean" />
  <Item Property1="Mauris" />
  <Item Property1="Vivamus" />
  <Item Property1="Nullam" />
  <Item Property1="Nam" />
  <Item Property1="Sed" />
  <Item Property1="Class" />
</SampleData>


但是如果我能解决这个问题,我会很生气,有人能帮忙吗?

我怀疑您需要创建一个具有您想要的行为(缩进等),然后在创建时将其传递给
XmlWriter
。只要设置为true就足够了:

XmlWriterSettings settings = new XmlWriterSettings { Indent = true };
using (XmlWriter writer = XmlWriter.Create(..., settings))
{
    ...
}

您可以通过自定义xml输出

您没有包含任何代码,但可以在创建XmlWriter时设置XmlWriterSettings。您也可以使用以下内容:

var myXmlWriter = new XmlWriterSettings { Indent = true };

您可以使用
DataSet.GetXML()


它与XmlWriter无关,但您可以使用它格式化XML。

如果您像我一样正在实现自己的
XmlWriter
,您可以:

var myXmlWriter=新的myXmlWriter(stream、System.Text.Encoding.UTF8)
{
格式化=格式化。缩进
};

或者在它的构造函数中执行
this.Formatting=Formatting.Indented

您有什么代码以及它的输出是什么?奇怪的是,为什么您要将xml写入独立的存储,而不是只存储值并动态创建xml?您有没有弄明白什么?这是不可能的,因为XMLWriterSettings.Ident是只读,这样做会引发类型为“System.Xml.XmlException”的异常@r1verside对我来说是公共的:。我上次回答这个问题已经有一段时间了,但我很确定我自己运行了代码,它运行得很好。还要注意,Jon Skeet的回答同样设置了XmlWriterSetting的缩进属性。Used
new XmlTextWriter
@r1verside在创建写入程序之前创建XmlWriterSettings,设置所需设置,然后创建XmlWriter并传递设置,XmlWriter接受XmlWriterSettings参数。我知道这是一个老话题,但它可能会帮助其他人。是的,例如属性Indent是公共的,但在尝试更改它时会引发异常。这会创建异常:
System.Xml.XmlException:“XmlWriterSettings.Indent”属性是只读的,无法设置。
Dim column As DataColumn
For Each column In DataSet.Tables.Item(0).Columns
    column.ColumnMapping = MappingType.Attribute
Next
Dim xml As String = DataSet.GetXml()