2013-03-25 60 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的自定义序列化,我可以在其中更改节点的名称。我相信你也必须这样做。