XMLAttribute中的ArrayIndex

时间:2014-07-10 10:38:19

标签: c# xml xml-serialization

我有一个Xml,其格式应为:

<name Segment1="infofor1" segment2="infofor2" Segment1_OtherInfo="SomethingElseFor1" Segment2_OtherInfo="SomethingElseFor2"/>

对于课堂我想到了休息:

public class Name{
  public Segment[]Segment{get;set;}
}

public class Segment{
 [XmlAttribute("Segment???")]
  public string Segment{get;set;}
 [XmlAttribute("Segment???_OtherInfo")]
  public string SegmentOtherInfo{get;set;}
}

一般来说,我希望数组的索引成为XML属性的名称。我认为这是非常讨厌的,但我不能改变xml,这是一个要求。 我该如何实现呢?我可以改变我想要的课程。 如果属性为空,则不会写入属性。

1 个答案:

答案 0 :(得分:0)

我认为括号中的注释对此不够灵活(但我必须花更多时间才能找到)。它们依赖于反射和XMLSeralizer,这意味着您的代码应该以某种方式表示XML模型。

在我看来,创建XElementXAttribute更容易。使用它们,您可以循环遍历数组,获取数组的索引(或增加计数器)并使用合适的名称添加必要的属性。

这是一个写得很好的例子: http://csharp-guide.blogspot.ch/2012/06/xattribute-class-is-used-along-with.html

像这样:

...
new XElement("name", new XAttribute("Segment" + counter, "infofor" + counter));
...