簡體   English   中英

Xml序列化添加具有屬性的元素

[英]Xml serialization add element with properties

我有兩節課:

public class A
{
    [XmlElement("Content")]
    public B SomeName { get; set; }
}

public class B
{
    [XmlAttribute]
    public int X { get; set; }
}

它像這樣序列化為xml:

<A>
  <Content X="5" />
</A>

我想在Content中指定元素名稱並得到類似的東西

<A>
  <Content>
      <Some element X="5" />
  </Content>
</A>

我是否可以在不創建新類的情況下執行此操作,將使用標准xml序列化包含B?

你有一個選擇是將申報SomeName類屬性A類型的對象的集合B再利用的[XmlArray][XmlArrayItem]屬性。

這是一個有效的例子。 請注意,我將屬性SomeName更改為SomeNames

[Serializable]
public class A
{
    [XmlArray("Content")]
    [XmlArrayItem("Some")]
    public List<B> SomeNames { get; set; } = new List<B>();
}

public class B
{
    [XmlAttribute(AttributeName = "element")]
    public int X { get; set; }
}

public static void XmlSerialize()
{
    var a = new A {SomeNames = new List<B> {new B() {X = 5}}};
    var serializer = new XmlSerializer(typeof(A));
    var settings = new XmlWriterSettings() {Indent = true};
    using var stream = XmlWriter.Create("serialized.xml", settings);
    serializer.Serialize(stream, a);
}

此示例生成的結果將符合您的要求:

<?xml version="1.0" encoding="utf-8"?>
<A xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Content>
    <Some element="5" />
  </Content>
</A>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM