2011-09-23 20 views
10

Tôi đang cố gắng để viết thư cho một tập tin XML để lưu trữ riêng biệt nhưng tôi muốn để định dạng nó như thế này: -Viết XML định dạng với 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> 

nhưng tôi buggered nếu tôi có thể làm việc đó ra, bất cứ ai có thể giúp đỡ?

Xin cảm ơn, đang đấu tranh với những người mới chơi.

+1

Bạn có mã nào và đầu ra của mã nào? –

+0

tò mò tại sao bạn muốn viết xml vào bộ nhớ bị cô lập thay vì chỉ lưu trữ các giá trị và tạo XML khi đang di chuyển? – Alan

+0

Bạn đã bao giờ nhận được những điều đã tìm ra chưa? – Sam

Trả lời

9

Bạn có thể tùy chỉnh đầu ra xml qua XmlWriterSettings.

Bạn không bao gồm bất kỳ mã nào, nhưng bạn có thể đặt XmlWriterSettings khi bạn tạo XmlWriter. Bạn cũng có thể chỉ cần sử dụng một cái gì đó như:

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

điều này là không thể vì XmlWritterSettings.Ident là chỉ đọc và làm như vậy ném một ngoại lệ của loại 'System.Xml.XmlException' – r1verside

+0

@ r1verside trông công khai với tôi: https://msdn.microsoft.com/en-us/ library/system.xml.xmlwritersettings.indent (v = vs.110) .aspx. Đã một thời gian kể từ lần cuối tôi trả lời câu hỏi này, nhưng tôi khá chắc chắn rằng tôi đã tự mình chạy mã và nó hoạt động tốt. Cũng lưu ý rằng câu trả lời của Jon Skeet tương tự thiết lập thuộc tính Indent của XmlWriterSetting. – Sam

+0

Thuộc tính Cài đặt giữ nguyên cho tôi. Được sử dụng 'mới XmlTextWriter' – MrFox

18

Tôi nghi ngờ bạn cần phải tạo một XmlWriterSettings với hành vi bạn muốn (thụt đầu dòng vv) và sau đó chuyển nó tới số XmlWriter khi tạo. Chỉ cần thiết lập Indent true cũng có thể đủ:

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

Bạn có thể sử dụng 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() 

Nó không liên quan đến XmlWriter nhưng bạn có thể sử dụng nó để định dạng XML.