Saya memiliki layanan WCF yang perlu mengembalikan string XML. Tapi sepertinya penulis hanya ingin membangun file, bukan string. Saya mencoba:
string nextXMLstring = "";
using (XmlWriter writer = XmlWriter.Create(nextXMLstring))
Ini menghasilkan kesalahan yang mengatakan nextXMLstring tidak memiliki jalur file. Ia menginginkan sesuatu seperti:
using (XmlWriter writer = XmlWriter.Create("nextXMLstring.xml"))
Bagaimana saya bisa membangun XML saya dan kemudian mengembalikannya sebagai string ??
Terima kasih!!
Seperti yang dikatakan Richard,
StringWriter
adalah jalan ke depan. Namun, ada satu halangan: secara default,StringWriter
akan mengiklankan dirinya sendiri sebagai UTF-16. Biasanya XML ada dalam UTF-8. Anda dapat memperbaikinya dengan membuat subclass StringWriter;Ini akan mempengaruhi deklarasi yang ditulis oleh
XmlWriter
. Tentu saja, jika Anda kemudian menulis string di tempat lain dalam bentuk biner, pastikan Anda menggunakan pengkodean yang cocok dengan pengkodean mana pun yang Anda perbaiki untukStringWriter
. (Kode di atas selalu mengasumsikan UTF-8; tidak mudah membuat versi yang lebih umum yang menerima pengkodean dalam konstruktor.)Anda kemudian akan menggunakan:
sumber
writer
tidak akan dibuang lebih dari sekali?Saya tahu ini sudah tua dan terjawab, tapi ini cara lain untuk melakukannya. Terutama jika Anda tidak ingin UTF8 BOM di awal string Anda dan Anda ingin teks menjorok ke dalam:
sumber
Encoding.UTF8.GetString(ms.ToArray())
adalah penyederhanaan saat Anda kembali.ms.ToArray()
tidak mengembalikan item ketika saya mencoba ini. Harus menambahx.Close()
atau memindahkan pernyataan kembali tepat di luar pernyataan menggunakan batin.Penggunaan
StringBuilder
:sumber
Guys jangan lupa untuk memanggil xmlWriter.Close () dan xmlWriter.Dispose () atau string Anda tidak akan selesai dibuat. Itu hanya akan menjadi string kosong
sumber
xmlWriter.Close()
adalah solusinya.Saya pikir solusi termudah dan tercepat di sini adalah hanya dengan:
sumber