簡體   English   中英

XML序列化,包括編碼信息和自定義名稱空間

[英]XML Serialization, Include encoding info and customized namespace

我通過以下代碼序列化MyXMLData類

XmlSerializer xmlSerializer = new XmlSerializer(typeof(MyXMLData));
FileStream fileStream = new FileStream(fileName, FileMode.Create);
xmlSerializer.Serialize(fileStream, myXMLData);
fileStream.Close();

輸出標頭來像

<?xml version="1.0"?>
<MyXMLData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

我的問題

1)我想包括編碼數據,例如`?xml version =“ 1.0” encoding =“ utf-8”?>。 這個怎么做?

2)我想更改名稱空間並放置自己的自定義名稱空間(這是我的要求),而不是xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ,我只想擁有類似於xmlns="http://www.mydata.org"

我可以讀取xml文件並在寫入內容后替換其內容,但是我想知道,編寫xml文件時是否一步一步就能做到這一點?

您可以執行以下步驟。
1.要滿足您的第一個要求:

XmlSerializer xmlSerializer = new XmlSerializer(typeof(MyXMLData));
var fname = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "filename.xml");
var appendMode = false;
var encoding = Encoding.GetEncoding("UTF-8");
using(StreamWriter sw = new StreamWriter(fname, appendMode, encoding))
{
      xmlSerializer.Serialize(sw, MyXMLData);
}    
  1. 達到第二要求

將以下名稱空間添加到XMLSerializer類的構造函數中:
XmlSerializer xmlSerializer = new XmlSerializer(typeof(MyXMLData), "http://www.mydata.org");

該解決方案按預期工作正常

XmlSerializer xmlSerializer = new XmlSerializer(typeof(MyXMLData));

XmlSerializerNamespaces ns1 = new XmlSerializerNamespaces();
ns1.Add("", "http://www.mydata.org");

Encoding encoding = Encoding.GetEncoding("UTF-8");

using (StreamWriter sw = new StreamWriter(fileName, false, encoding))
{
    xmlSerializer.Serialize(sw, myXMLData, ns1);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM