xml configsを読み書きするコンフィギュレータを作成する必要があります。設定の 一部は、次の形式である:2つのシステム属性のいずれかを選択してください。
<camera>
<id>1</id>
<name>Camera 1</name>
<address>http://192.168.1.100</address>
<roi>
<rect>
<x>100</x>
<y>200</y>
<width>300</width>
<height>150</height>
</rect>
<rect>
<x>350</x>
<y>400</y>
<width>200</width>
<height>250</height>
</rect>
</roi>
</camera>
しかし、XML属性を持つ形で、私は必要な出力:
<camera id="1" name="Camera 1" address="http://192.168.1.100">
<roi>
<rect x="100" y="200" width="300" height="150 />
<rect x="350" y="400" width="200" height="250 />
</roi>
</camera>
私はすべてのメインノードのクラスを作成しますが、私はどのように思っていました逆シリアル化のプロパティがXmlElementでなければならず、直列化の場合はXmlAttributeである必要があります。または、私はxmlの最初の形式と2番目の形式の2つの別々のクラスを作成していますか?私はC#と.NETの初心者ですので、他の方法でそれを行うためのポイントや提案もありますか?
C#コード:
[System.Serializable()]
public class CamerasConfigAttrib
{
private int id;
private string name;
private string address;
private Collection<Rectangle> roi;
[XmlAttribute("id", Form = XmlSchemaForm.Unqualified)]
public int Id
{
get { return id; }
set { id = value; }
}
[XmlAttribute("name", Form = XmlSchemaForm.Unqualified)]
public string Name
{
get { return name; }
set { name = value; }
}
[XmlAttribute("address", Form = XmlSchemaForm.Unqualified)]
public string Address
{
get { return address; }
set { address = value; }
}
[XmlArray("roi", Form = XmlSchemaForm.Unqualified)]
[XmlArrayItem("rect", typeof(Rectangle), Form = XmlSchemaForm.Unqualified]
public Collection<Rectangle> Roi
{
get { return roi; }
set
{
foreach (var rect in value)
roi.Add(rect);
}
}
}
少し複雑だ、私はあなたが2つの異なるクラスを作るために持っていると思うが、それを行うには良い方法があれば、それは私に興味 – GGO
XSLTを作成し、新しいXMLを作成するために 'XslCompiledTransform'を使うべきです。 – Sefe