2009-02-26 27 views
19

Tôi có một chuỗi và giá trị của nó là:Làm cách nào để viết một chuỗi XML vào một tệp?

<ROOT> 
    qwerty 
    <SampleElement>adsf</SampleElement> 
    <SampleElement2>The text of the sample element2</SampleElement2> 
</ROOT> 

Làm thế nào tôi có thể viết chuỗi này vào một tập tin bằng C# 3.0?

Xin cảm ơn trước.

+1

Tiêu đề này là rất sai lầm. Nó thực sự nên nói một cái gì đó về tập tin I/O trong C# – Akrikos

+0

Andrew tại sao rollback? –

+0

Tôi nghĩ chúng ta nên cố gắng tôn trọng bài đăng gốc càng nhiều càng tốt bao gồm cả nội dung "Xin chào mọi người" vì đó là những gì OP viết. Không có gì cá nhân :) –

Trả lời

0

Bạn sẽ phải sử dụng CDATA section. Cụ thể hơn, tạo một XmlCDataSection sử dụng XmlDocument.CreateCDataSection và cung cấp chuỗi của bạn làm tham số.

45

Hãy thử điều này:

string s = "<xml><foo></foo></xml>"; 
XmlDocument xdoc = new XmlDocument(); 
xdoc.LoadXml(s); 
xdoc.Save("myfilename.xml"); 

Có lợi ích bổ sung rằng tải sẽ thất bại nếu XML của bạn không hợp lệ.

+2

+1 Đồng thời giải phóng bạn khỏi lo lắng về việc mã hóa vv – bernhof

17
File.WriteAllText("myFile.xml",myString); 
+0

+1 Để tiết kiệm chi phí khi chuyển đổi tệp sang XDocument chỉ để nhận cuộc gọi IO thuận tiện. Đối với xê-ri hóa không phải là không gian tên hoặc Xml, phương pháp này hiệu quả hơn. – Jason

-3

Tôi biết bạn đã nói C# nhưng bạn đã thử VB.NET cho XML Literals. Những thứ tuyệt vời.

Public Class Program 
    Public Shared Sub Main() 
     Dim myKeyBoardStyle = "dvorak" 

     Dim myXML As XElement = <ROOT> 
           qwerty 
           <altKeyboard><%= myKeyBoardStyle.ToUpper() %></altKeyboard> 
            <SampleElement>adsf</SampleElement> 
            <SampleElement2>The text of the sample element2</SampleElement2> 
           </ROOT> 

     Console.WriteLine(myXML.ToString()) 

     myXML.Save(".\fileFromXElement.xml") 
    End Sub 
End Class 

Thông báo các yếu tố gọn gàng mà tiêm kết quả của mã trong thành đầu ra:

<?xml version="1.0" encoding="utf-8"?> 
<ROOT> 
           qwerty 
           <altKeyboard>DVORAK</altKeyboard><SampleElement>adsf</SampleElement><SampleElement2>The text of the sample element2</SampleElement2></ROOT> 

snip [ý kiến ​​removed]

+5

Đây không phải là một công cụ thích hợp cho công việc. Bài đăng của bạn là một ví dụ về những hạn chế chỉ biết một công cụ và cố gắng ép buộc mọi thứ vào đó. Nếu OP đang sử dụng C# cho mọi thứ khác, việc giới thiệu VB.NET chỉ đơn giản là để lưu một chuỗi XML là vô lý. –

+0

Không có bài đăng của tôi trong một ví dụ về những gì một tâm trí cởi mở có thể làm bằng cách sử dụng các dự án của nhiều ngôn ngữ trong cùng một giải pháp. Cú pháp ngôn ngữ VB rất dễ sử dụng cho XML. Tôi sử dụng cả VB và C#. Nó không rõ ràng bao nhiêu "mọi thứ khác" được thực hiện trong C# bởi pragadheesh. Có lẽ anh ta khám phá các lựa chọn thay thế. –

+8

Tôi vẫn nói việc giới thiệu một ngôn ngữ khác cho mục đích đơn giản là lưu chuỗi XML là vô lý. Trên thực tế mở tâm trí của bạn và suy nghĩ về những gì bạn đang đề xuất: "Gee, tôi sẽ mang trong một chiếc xe ủi đất, mặc dù tất cả tôi cần là một bay, để di chuyển cốc này đầy cát vào vườn." –

Các vấn đề liên quan