2013-03-25 66 views
3

我有一個具有以下數據XML序列化使用的XMLElement

public partial class EHRNodesTesting { 
    private string fieldID; 
    private bool fieldRights; 
    private string fieldName; 

    [System.Xml.Serialization.XmlAttribute] 
    public string FieldID 
    { 
     get { return this.fieldID; } 
     set { this.fieldID = value; } 
    } 
    [System.Xml.Serialization.XmlAttribute] 
    public bool FieldRights 
    { 
     get { return this.fieldRights; } 
     set { this.fieldRights = value; } 
    } 
    [XmlElement("Value")] 
    public string FieldValue 
    { 
     get { return this.fieldName; } 
     set { this.fieldName = value; } 
    } 
} 

然後我填充這個使用了一組數據,我得到,所以我沒有預定義的領域和序列化結果如下

一個定義的類
<FieldNode> 
    <FieldName FieldID="LastName" FieldRights="true"> 
     <FieldValue>Harris</FieldValue> 
    </FieldName> 
    <FieldName FieldID="FirstNameName" FieldRights="true"> 
     <FieldValue>John</FieldValue> 
    </FieldName> 
</FieldNode> 

現在,有沒有一種方式,序列化發生FieldID的價值,並用它來替換fieldName得到以下

<FieldNode> 
    <LastName FieldID="LastName" FieldRights="true"> 
     <FieldValue>Harris</FieldValue> 
    </LastName > 
    <FirstName FieldID="FirstName" FieldRights="true"> 
     <FieldValue>John</FieldValue> 
    </FirstName> 
</FieldNode> 
+1

我可能會誤解你所問的內容,但是如果你想修改節點名,'XmlNode.Name'是一個**只讀**屬性。考慮自己創建xml。請參閱[XDocument](http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.aspx) – tnw 2013-03-25 18:53:44

+0

我發現節點名稱通常與某個屬性或類相關,因此請考慮命名要麼相應 – Sayse 2013-03-25 18:59:35

+0

所以看起來沒有辦法設置一個規則來做到這一點,而不是創建自己的XML – 2013-03-25 19:04:41

回答

0

用XmlDocument/XDocument對象無法做到這一點。您是否嘗試過實施IXmlSerializable來自定義輸出?我沒有遇到界面的限制。

我確實有一個類似Xml的自定義序列化,我可以在其中更改節點的名稱。我相信你也必須這樣做。