2013-08-30 280 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結構 –