C# xml序列化时如何去掉节点里的d2p1:type和xmlns:d2p1

序列化方法里用了XmlSerializerNamespacesns=newXmlSerializerNamespaces();ns.Add("","");但是不管用Per... 序列化方法里用了

XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("", "");
但是不管用

PersonalList里用到了派生类,SpecialPerson、SuperPerson继承自Personal,用了XmlClude

<?xml version="1.0" encoding="gb2312"?>
<PersonalList>
<Listname>Friends</Listname>
<Persons PersID="0">
<Name>Max Man</Name>
<City>Capitol City</City>
<Age>33</Age>
</Persons>
<Persons d2p1:type="SpecialPerson" PersID="1" xmlns:d2p1="http://www.w3.org/2001/XMLSchema-instance">
<Name>Albert Einstein</Name>
<City>Ulm</City>
<Age>36</Age>
<SpecialInterests>Physics</SpecialInterests>
<班级信息>
<学生 姓名="Martha" 姓别="女" 生日="1989-10-09T00:00:00" />
</班级信息>
</Persons>
<Persons d2p1:type="SuperPerson" PersID="2" xmlns:d2p1="http://www.w3.org/2001/XMLSchema-instance">
<Name>Superman</Name>
<City>Metropolis</City>
<Age>2147483647</Age>
<Skills>
<Skill>fly</Skill>
<Skill>strong</Skill>
</Skills>
<Alias>Clark Kent</Alias>
</Persons>
</PersonalList>
展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏50(财富值+成长值)
迷恋只是你背影
2014-10-11 · 超过13用户采纳过TA的回答
知道答主
回答量:18
采纳率:0%
帮助的人:20万
展开全部
这个我真没办法,如果能改,那你就不能反序列化对象呢。
那个type说明了你应该反序列化成什么对象,而且这个d2p1是不影响反序列话的,
反序列话判断的是 名称控件即 http://www.w3.org/2001/XMLSchema-instance。所以我电脑上是
p2:type="SuperPerson" xmlns:p2="http://www.w3.org/2001/XMLSchema-instance"。
如果你要去掉的话,只有一个办法,自己拼写xml 用xmlWriter,
我简单些了个,需要做些修改,处理一些数组之类的
static public string MyXmlSerializer<T>(T obj)
{
PropertyInfo[] proinfo = obj.GetType().GetProperties();
StringBuilder sb = new StringBuilder();
XmlWriterSettings setting = new XmlWriterSettings();
setting.Encoding = UTF8Encoding.UTF8;
setting.Indent = true;
setting.OmitXmlDeclaration = false;
XmlWriter xw = XmlWriter.Create(sb,setting);
xw.WriteStartDocument(true);
xw.WriteStartElement("root");
foreach (PropertyInfo p in proinfo)
{
xw.WriteStartElement(p.Name);
xw.WriteString( p.GetValue(obj,null).ToString());
xw.WriteEndElement();
}
xw.WriteEndElement();
xw.WriteEndDocument();
xw.Close();
// proinfo[1].GetValue(obj, null);
return sb.ToString();
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式