2011-10-25 9 views
0

我還沒有找到任何關於此的信息,也許有人可以幫忙。反序列化後獲取XmlElementAttribute的名稱

我有(簡化爲方便起見)的XML:

<content> 
    <field1>value</field1> 
    <field2> 
    <field3>value</field3> 
    </field2> 
</content> 

我嘗試使用這樣的類反序列化:

[XmlRoot("content")] 
public class Content 
{ 
    [XmlElement] 
    public List<Item> Fields { get; set; } 
} 

public class Item 
{ 

    [XmlElement] 
    public List<Item> Fields { get; set; } 

    [XmlText] 
    public String Value { get; set; } 
} 

我有兩個問題:

  1. 燦我得到了該領域的實際名稱?像Item中的[XmlName] string name;?或者類的某種屬性?由於某些原因,無法將節點名稱設置爲「field」並添加「type」屬性;-)雖然實際的類和序列化過程非常複雜,但我並不想實現自己的序列化程序。

  2. 我可以添加通配符,如[XmlElement(「field *」)]嗎?除非我知道第一個問題的答案,否則我無法測試它,所以如果有更好的選擇,我也很想知道它。

謝謝。

+0

看起來你試圖創建一個可以表示任意XML的結構。如果是這樣的話,爲什麼你使用XML序列化呢?使用LINQ to XML可能更適合。 – svick

+0

嗯,你是對的,它是一個相當隨意的結構。關鍵是,我已經在很多情況下使用過XML序列化了,我想在整個項目中保留這個約定(到目前爲止,這是可能的)。當然,如果我找不到解決方案,我將切換到LINQ .. –

回答

0

這裏唯一的答案是,不幸的是,這是不可能的。

因此我們寫了自己的序列化例程。

1

您可以在屬性的構造設置匹配的名稱XML的元素和屬性

[XmlAttribute("FieldAsAttribute")] 

- >將序列/反序列化屬性的XML屬性FieldAsAttribute

[XmlElement("FieldAsElement")] 

- >將序列化/反序列關於物業的XML元素FieldAsElement

+0

它只會序列化/反序列化具有這些名稱的元素。我需要像上面提到的@svick一樣反序列化任意的XML結構。 –

+0

好的,理解你錯了... – fixagon

相關問題