2013-05-22 88 views
0

我有xml文件就像我在下面說明反序列化XML基地在C#我的類的屬性

<Root name="myRoot"> 
    <Field name = "myField">"blabla</Field> 
    <List name="data"> 
     <Row name="data"> 
      <Field name="Field1">sample</Field> 
      <Field name="Field2">sample</Field> 
     </Row>  
    </List> 
</Root> 

我想映射此XML文件到這個類:

public class Row 
{ 
    public string Field1 
    { 
     get;set; 
    } 

    public string Field2 
    { 
     get;set; 
    } 
} 

我問題是如何將atrribute名稱映射到「Row」類的屬性? 順便說一下,我能夠根據標籤(字段)映射到「行」類的屬性。 我的觀點是如何在字段標籤上添加屬性名稱值的額外條件?

對不起,我的英語。

在此先感謝。

+0

谷歌的'XmlAttribute' – I4V

+0

@ I4V在這裏沒有幫助 –

+0

注意:你在xml中的佈局看起來很像「內部平臺效應」...... xml已經*已經*表達了根,字段和列表 - 包括名字。您已經整齊地重新構建了xml *中的特性。這通常意味着你使用不正確。 –

回答

1

沒有內置XML串行化器(特別地,既不XmlSerializer也不DataContractSerializer),可以使用一個屬性的值映射到一個構件。 名稱屬性 - 確定(例如<cust id="12345" name="Fred"/>) - 但不是您的<Field name="Field2">...</Field>

因此,您將不得不使用類似於XmlDocument,XDocumentXmlReader的內容來執行此操作。或者,也許是通過XSLT運行它,把它變成東西XmlSerializer可以手柄,即你可以構建(通過XSLT):

<myRoot> 
    <myField>"blabla</myField> 
    <data> 
     <data> 
      <Field1>sample</Field1> 
      <Field2>sample</Field2> 
     </data> 
    </data> 
</myRoot> 

(將涉及使用特別<xsl:element name="@name">