[英]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);
}
将以下名称空间添加到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.