2011-09-23 20 views
10

Staram się pisać do pliku XML do przechowywania wyizolowanej ale chciałbym sformatować to tak: -Pisanie sformatowany XML z 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> 

ale jestem buggered jeśli mogę pracować go czy ktoś może pomóc?

Dzięki, walczy nowicjusz.

+1

Jaki masz kod i jaki jest jego wynik? –

+0

ciekawy dlaczego chcesz napisać xml do izolowanego magazynu zamiast przechowywać tylko wartości i tworzyć XML w locie? – Alan

+0

Czy zdarzyło Ci się coś wymyślić? – Sam

Odpowiedz

9

Można dostosować wyjście XML przez XmlWriterSettings.

Nie zawierałeś żadnego kodu, ale możesz ustawić XmlWriterSettings podczas tworzenia XmlWriter. Można też po prostu użyć czegoś takiego:

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

nie jest to możliwe, ponieważ XmlWritterSettings.Ident jest tylko do odczytu i robi to wyjątek typu "System.Xml.XmlException" – r1verside

+0

@ r1verside wygląda na mnie: https://msdn.microsoft.com/en-us/ library/system.xml.xmlwritersettings.indent (v = vs.110) .aspx. Minęło trochę czasu odkąd ostatni raz odpowiedziałem na to, ale jestem pewien, że sam wykonałem kod i wszystko działało dobrze. Zauważ też, że odpowiedź Jona Skeeta podobnie ustawia właściwość Wcięcia w XmlWriterSetting. – Sam

+0

Właściwość Ustawienia pozostaje dla mnie zerowa. Użyte 'nowy XmlTextWriter' – MrFox

18

Podejrzewam, że trzeba utworzyć XmlWriterSettings z zachowaniem, którego chcesz (wcięcie itp.), A następnie przekazać do XmlWriter podczas tworzenia. Po prostu ustawienie Indent true może okazać się na tyle:

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

Można użyć 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() 

To nie jest związany z XmlWriter ale można go użyć do formatowania XML.