使用XMLElement进行XML序列化

3

我有一个定义好的类,其中包含以下数据

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 - tnw
我发现节点名称通常与属性或类相关,因此请考虑相应地命名。 - Sayse
看起来似乎没有其他方法可以设置规则来完成这个任务,除了创建自己的XML。 - sana ali
1个回答

0

使用XmlDocument / XDocument对象无法完成此操作。您是否尝试通过实现IXmlSerializable来自定义输出?我对接口的限制不太熟悉。

我有一种类似Xml的自定义序列化方式,可以更改节点名称。我认为您需要做同样的事情。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接