我有一些课,狐狸的例子
public class Test
{
[XmlElement(IsNullable = true)]
public string SomeProperty{get;set;}
}
当我序列化这个类的对象时,我得到了
<test>
<SomeProperty>value<someproperty>
<test>
但我需要将属性添加到SomeProperty 而不更改类的结构并获取此
<test>
<SomeProperty Search="true">value<someproperty>
<test>
我该怎么做?
PS:我知道,我可以编写包含“SomeProperty”和Bool属性“Search”的对象,但它会改变类的结构答案 0 :(得分:2)
要使用XmlSerializer
执行此操作,您需要使用[XmlAttribute]
和[XmlText]
的第二种类型。唯一的另一个选择是IXmlSerializable
,这是:很多工作,很容易出错。
选项:
SomeProperty
SomeProperty
并行添加 shim 属性 - 并将SomeProperty
标记为[XmlIgnore]
IXmlSerializable
(哎哟)XmlSerializer
(例如,查看LINQ-to-XML或DOM)XmlSerializer
,但之后编辑xml(例如通过DOM或xslt)答案 1 :(得分:0)
以下类结构将生成给定的xml
[XmlRoot("test")]
public class Test {
[XmlElement("items")]
public MyListWrapper Items {get;set;}
}
public class MyListWrapper {
[XmlAttribute("Search")]
public string Attribute1 {get;set;}
[XmlElement("item")]
public List<MyItem> Items {get;set;}
}
public class MyItem {
[XmlAttribute("id")]
public int Id {get;set;}
}
,xml将是
<?xml version="1.0" ?>
<test>
<items search="hello">
<item id="1" />
<item id="2" />
<item id="3" />
</items>
</test>