使用XmlWriter编写格式化的XML

时间:2011-09-23 21:57:35

标签: 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 Property1="Vivamus" />
  <Item Property1="Nullam" />
  <Item Property1="Nam" />
  <Item Property1="Sed" />
  <Item Property1="Class" />
</SampleData>

但如果我能解决这个问题,我会感到不安,有人可以帮忙吗?

谢谢, 挣扎的新手。

4 个答案:

答案 0 :(得分:22)

我怀疑您需要使用您想要的行为创建XmlWriterSettings(缩进等),然后在创建时将其传递给XmlWriter。只需将Indent设置为true即可:

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

答案 1 :(得分:12)

您可以通过XmlWriterSettings自定义xml输出。

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

myXmlWriter.Settings.Indent = true;
myXmlWriter.Settings.IndentChars = "     "; // note: default is two spaces
myXmlWriter.Settings.NewLineOnAttributes = false;
myXmlWriter.Settings.OmitXmlDeclaration = true;

答案 2 :(得分:0)

如果像我一样,您正在实现自己的XmlWriter,则可以执行以下操作:

var myXmlWriter = new MyXmlWriter(stream, System.Text.Encoding.UTF8)
{
    Formatting = Formatting.Indented
};

或在其构造函数中执行this.Formatting = Formatting.Indented

答案 3 :(得分:-1)

您可以使用DataSet.GetXML()

Dim column As DataColumn
For Each column In DataSet.Tables.Item(0).Columns
    column.ColumnMapping = MappingType.Attribute
Next
Dim xml As String = DataSet.GetXml()

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