高分询问XML序列化以及去掉默认命名空间的问题
XML这块不太熟悉,现在将自个定义的对象序列化时,出现点问题,各位看官来帮帮忙。涉及到序列化继承类,去掉默认的命名空间后,继承类出的节点出现了“d2p1”这个玩意,这是啥?
要序列化的对象:
序列化,这块大家都懂得
序列化的XML
各位看官给看看,为啥去掉默认命名空间后,requestParam节点中,d2p1:type和xmlns:d2p1本来应该是xsi的都变成了d2p1。
要序列化的对象:
[Serializable]
public class swRequest
{
public requestParam requestParam;
}
[Serializable]
[XmlInclude(typeof(roomQueryParam))]
public class requestParam
{
}
[Serializable]
public class roomQueryParam:requestParam
{
[XmlElementAttribute("hotelCode", IsNullable = false)]
public string hotelCode { get; set; }
[XmlElementAttribute("checkInDate", IsNullable = false)]
public string checkInDate { get; set; }
[XmlElementAttribute("checkOutDate", IsNullable = false)]
public string checkOutDate { get; set; }
[XmlElementAttribute("provider", IsNullable = false)]
public provider[] providers { get; set; }
}
[Serializable]
public class provider
{
[XmlElementAttribute("providerType", IsNullable = false)]
public int providerType { get; set; }
[XmlElementAttribute("providerName", IsNullable = false)]
public string providerName { get; set; }
}
序列化,这块大家都懂得
public static string XmlSerialize<T>(T obj)
{
if (obj == null) return string.Empty;
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
using (MemoryStream memoryStream = new System.IO.MemoryStream())
{
using (XmlTextWriter xtw = new System.Xml.XmlTextWriter(memoryStream, Encoding.UTF8))
{
XmlSerializerNamespaces xns = new XmlSerializerNamespaces();
xns.Add("", "");
xmlSerializer.Serialize(xtw, obj,xns);
memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
using (System.IO.StreamReader streamReader = new System.IO.StreamReader(memoryStream, Encoding.UTF8))
{
return streamReader.ReadToEnd();
}
}
}
}
序列化的XML
<?xml version="1.0" encoding="utf-8"?><swRequest><requestParam d2p1:type="roomQueryParam" xmlns:d2p1="http://www.w3.org/2001/XMLSchema-instance"><hotelCode>SS7789</hotelCode><checkInDate>2013-07-03</checkInDate><checkOutDate>2013-07-05</checkOutDate><provider><providerType>1</providerType><providerName>测试</providerName></provider></requestParam></swRequest>
各位看官给看看,为啥去掉默认命名空间后,requestParam节点中,d2p1:type和xmlns:d2p1本来应该是xsi的都变成了d2p1。
...全文
相关推荐
WebApi返回xml格式时去除命名空间
WebApi 返回 xml 格式数据时自动去除命名空间相关标记
WCF 返回XML去除默认命名空间实例Demo
WCF 返回XML去除默认命名空间实例Demo 解压后根据说明文档修改您的程序。
对象序列化:使用System.Xml.Serialization命名空间
要使用.NET进行对象的序列化,必须在解决方案中添加System.Xml的引用,并且在类文件中引入System.Xml.Serialization命名空间。这样就可以在文件中使用序列化所需要的各种特性了。 Imports System.Xml.Serialization 如果对XML Serialization缺少了解,请首先参考拙文:在.NET中实现对象序列化
WebApi去除XML命名空间
WebApi去除XML命名空间 vs2013版本及以上环境下运行
C#JSon XML序列化与反序列化工具
自制C# json XML解析工具 我们项目用起来还是比较实用的!!!!!!!!!



