2013-08-30 232 views
3

我有一些类,狐狸例如添加XML属性属性

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”和布尔财产“搜索”,但它会改变

+1

如何/在哪里存储与Test实例一起搜索的值? –

+0

这是一个问题。可能有一些属性存在 – cosset

+0

也许不是。最好稍微回过头来问一下你真正需要做什么。这似乎是一个失败的解决方案的一半。 –

回答

2

的结构,要做到这一点与XmlSerializer,你就需要有一个第二键入[XmlAttribute][XmlText]。唯一的其他选择是IXmlSerializable,这是:很多工作,容易出错。

选项:

  • 变化SomeProperty
  • 并联的结构添加垫片属性SomeProperty - 和标记SomeProperty[XmlIgnore]
  • 使用一个完全独立的DTO模型序列化(当序列化不适合干净地时,总是我的选择)
  • 使用IXmlSerializable(哎哟)
  • 不使用XmlSerializer在所有的(看着LINQ到XML或DOM等)
  • 使用XmlSerializer,但通过DOM或XSLT事后编辑XML(例如)
0

以下类结构会产生给定XML

和XML将是

<?xml version="1.0" ?> 
<test> 
    <items search="hello"> 
     <item id="1" /> 
     <item id="2" /> 
     <item id="3" /> 
    </items> 
</test> 
+0

它会改变类 – cosset

+0

的结构此外,这是不一样的问题中显示的xml结构 –