对象序列化后......

ludevica 2010-10-20 02:09:54
以对象序列化后:
<person>
<name>mary</name>
<age>28></age>
</person>.
我现想把序列化后的xml改成:
<person>
<female>
<name>mary</name>
<age>28></age>
<female>
</person>.
请问有什么api可供使用?谢谢!
...全文
228 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2010-10-20
  • 打赏
  • 举报
回复
xml直接插入节点public void Insert(string path, string node, string element, string attribute, string value)
{
try
{
XmlDocument doc = new XmlDocument();
doc.Load(path);
XmlNode xn = doc.SelectSingleNode(node);
if (element.Equals(""))
{
if (!attribute.Equals(""))
{
XmlElement xe = (XmlElement)xn;
xe.SetAttribute(attribute, value);
}
}
else
{
XmlElement xe = doc.CreateElement(element);
if (attribute.Equals(""))
{
xe.InnerText = value;
}
else
{
xe.SetAttribute(attribute, value);
}
xn.AppendChild(xe);
}
doc.Save(path);
}
catch { }
}
铛铛 2010-10-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lost_painting 的回复:]
可以直接操作XML.

问题是,你为什么要修改对象序列化之后的XML.
修改之后的XML是不能再反序列化来使用了,因为你人为的更改了该XML.
[/Quote]
++
修改之后你还能做什么用呢?
symbol_bc 2010-10-20
  • 打赏
  • 举报
回复
在通常情况下,序列化后的结果还要被反序列化为对象,如果更改,则无法反序列化。

轻微更改时,可以通过序列化特性标记来实现,但是复杂的话,就要继承IXmlSerializable 接口实现。
蔡袅 2010-10-20
  • 打赏
  • 举报
回复
我觉得还是操作xml的问题
看看我空间这篇 C# xml 增删查改实例
SecretGarden 2010-10-20
  • 打赏
  • 举报
回复
自己序列化的话,可以按任意格式,参见:XMLDocument
如果想利用 .NET 的缺省序列化机制,则需要更改你的类设计:

[Serializable()]
public class Person
{
public Females females;
}

[Serializable()]
public class Females
{
public string Name;
public string Age;
}
hztltgg 2010-10-20
  • 打赏
  • 举报
回复
如何得知mary是female?
鸭梨山大帝 2010-10-20
  • 打赏
  • 举报
回复
可以直接操作XML.

问题是,你为什么要修改对象序列化之后的XML.
修改之后的XML是不能再反序列化来使用了,因为你人为的更改了该XML.

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧