2011-09-23 9 views
10

Estoy intentando escribir en un archivo XML para el almacenamiento aislado, pero me gustaría darle formato como esto: -escritura XML formateado con XmlWriter

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

pero estoy buggered si puedo trabajarlo afuera, ¿alguien puede ayudar?

Gracias, luchando newbie.

+1

¿Qué código tiene y cuál es su salida? –

+0

¿Por qué quiere escribir xml en el almacenamiento aislado en lugar de almacenar solo los valores y crear el XML sobre la marcha? – Alan

+0

¿Alguna vez has descubierto las cosas? – Sam

Respuesta

9

Es posible personalizar la salida XML a través de la XmlWriterSettings.

No incluyó ningún código, pero puede establecer el XmlWriterSettings cuando crea el XmlWriter. También se puede simplemente usar algo como:

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

esto no es posible porque XmlWritterSettings.Ident es de solo lectura y al hacerlo arroja una excepción de tipo 'System.Xml.XmlException' – r1verside

+0

@ r1verside me parece pública: https://msdn.microsoft.com/en-us/ library/system.xml.xmlwritersettings.indent (v = vs.110) .aspx. Ha pasado un tiempo desde la última vez que respondí esto, pero estoy bastante seguro de que ejecuté el código y funcionó bien. También tenga en cuenta que la respuesta de Jon Skeet establece de manera similar la propiedad de sangría de XmlWriterSetting. – Sam

+0

La propiedad de Configuración permanece nula para mí. Usado 'new XmlTextWriter' – MrFox

18

Sospecho que necesita crear un XmlWriterSettings con el comportamiento que desea (sangría, etc.) y luego pasarlo al XmlWriter en la creación. Sólo la creación de Indent a cierto bien puede ser suficiente:

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

Puede utilizar 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() 

No está relacionado a XmlWriter pero se puede usar para dar formato XML.

Cuestiones relacionadas