prevent自动关闭标签的XmlSerializer当没有数据是present [英] Prevent self closing tags in XmlSerializer when no data is present
本文介绍了prevent自动关闭标签的XmlSerializer当没有数据是present的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
当我序列值:如果没有价值present的数据,然后它象下面这样的格式来了。
<注意>
<类型>由PPS&LT应答; /型号>
<数据/>
< /注>
但是我想在下面格式的XML数据:
<注意>
<类型>由PPS&LT应答; /型号>
<数据>< /数据>
< /注>
code。对于这一点,我已经写了:
[Serializable接口]
公共类注意事项
{
[的XmlElement(类型)
公共字符串的typeName {获得;组; }
[的XmlElement(数据)
公共字符串dataValue {获得;组; }
}
我无法弄清楚怎么做的实现数据的以下格式,如果数据没有分配任何价值。
<注意>
<类型>由PPS&LT应答; /型号>
<数据>< /数据>
< /注>
解决方案
您可以通过创建自己的XmlTextWriter传递到序列化过程中做到这一点。
公共类MyXmlTextWriter:XmlTextWriter的
{
公共MyXmlTextWriter(流流):基地(物流,Encoding.UTF8)
{
}
公众覆盖无效WriteEndElement()
{
base.WriteFullEndElement();
}
}
您可以使用测试结果:
类节目
{
静态无效的主要(字串[] args)
{
使用(VAR流=新的MemoryStream())
{
无功序列化=新的XmlSerializer(typeof运算(注));
VAR作家=新MyXmlTextWriter(流);
serializer.Serialize(作家,新的Notes(){的typeName =已确认由PPS,dataValue =});
VAR的结果= Encoding.UTF8.GetString(stream.ToArray());
Console.WriteLine(结果);
}
Console.ReadKey();
}
When I serialize the value : If there is no value present in for data then it's coming like below format.
<Note>
<Type>Acknowledged by PPS</Type>
<Data />
</Note>
But what I want xml data in below format:
<Note>
<Type>Acknowledged by PPS</Type>
<Data></Data>
</Note>
Code For this i have written :
[Serializable]
public class Notes
{
[XmlElement("Type")]
public string typeName { get; set; }
[XmlElement("Data")]
public string dataValue { get; set; }
}
I am not able to figure out what to do for achieve data in below format if data has n't assign any value.
<Note>
<Type>Acknowledged by PPS</Type>
<Data></Data>
</Note>
解决方案
You can do this by creating your own XmlTextWriter to pass into the serialization process.
public class MyXmlTextWriter : XmlTextWriter
{
public MyXmlTextWriter(Stream stream) : base(stream, Encoding.UTF8)
{
}
public override void WriteEndElement()
{
base.WriteFullEndElement();
}
}
You can test the result using:
class Program
{
static void Main(string[] args)
{
using (var stream = new MemoryStream())
{
var serializer = new XmlSerializer(typeof(Notes));
var writer = new MyXmlTextWriter(stream);
serializer.Serialize(writer, new Notes() { typeName = "Acknowledged by PPS", dataValue="" });
var result = Encoding.UTF8.GetString(stream.ToArray());
Console.WriteLine(result);
}
Console.ReadKey();
}
这篇关于prevent自动关闭标签的XmlSerializer当没有数据是present的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文