2011-09-23 8 views
10

Sto cercando di scrivere in un file XML per l'archiviazione isolata ma vorrei formattarlo in questo modo: -scrittura in formato XML 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> 

ma sono inculata se posso lavorare fuori, qualcuno può aiutare?

Grazie, newbie in difficoltà.

+1

Che codice hai e quale è il suo output? –

+0

curioso perché vuoi scrivere xml su una memoria isolata invece di memorizzare solo i valori e creare l'XML al volo? – Alan

+0

Hai mai capito cosa? – Sam

risposta

9

È possibile personalizzare l'output XML tramite il XmlWriterSettings.

Non hai incluso alcun codice, ma puoi impostare XmlWriterSettings quando crei XmlWriter. È anche possibile usare qualcosa come:

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

questo non è possibile poiché XmlWritterSettings.Ident è di sola lettura e così facendo genera un'eccezione di tipo 'System.Xml.XmlException' – r1verside

+0

@ r1verside mi sembra pubblica: https://msdn.microsoft.com/en-us/ biblioteca/system.xml.xmlwritersettings.indent (v = vs.110) aspx. È passato un po 'di tempo dall'ultima volta che ho risposto a questo, ma sono abbastanza sicuro di aver eseguito il codice da solo e ha funzionato bene. Si noti inoltre che la risposta di Jon Skeet imposta in modo simile la proprietà Rientro di XmlWriterSetting. – Sam

+0

La proprietà Impostazioni rimane nulla per me. Usato 'new XmlTextWriter' – MrFox

18

Sospetto che sia necessario creare un XmlWriterSettings con il comportamento desiderato (rientro ecc.) E quindi passarlo allo XmlWriter alla creazione. Basta impostare a true Indent potrebbe essere sufficiente:

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

È possibile utilizzare 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() 

Non è legato alla XmlWriter, ma lo si può utilizzare per la formattazione XML.