我有一个复杂结构的XML文件。以下只是一个小样本。对象创建链模式
<MainTag>
<Tag1 name="">
<SubTag1_1 msgType="">
<SubTag1_2 storeId="abc" abc=""/>
</Tag1>
<Tag2 msgType="">
<SubTag2_1 name="" cap="" value="#"/>
<SubTag2_2=""/>
</Tag2>
</Tag1>
<Tag3 name="">
<SubTag3>
<SubTag3_1 msgType="A" value="1">
<SubSubTag3 name="" xml="" sap="" time_delta="0" time_absolute="2"/>
<SubSubTag3 name="" xml="" sap="" type="transmit" time_delta="5" time_absolute="2"/>
</SubTag3_1 >
<SubTag3_2 msgType="" value="1">
<SubSubTag3 name="" xml="" sap="" type="receive" time_delta="0" time_absolute="2"/>
</SubTag3_2>
</SubTag3>
</Tag3>
</MainTag>
我必须为不同的数据集多次创建上述XML文件。我没有用一个类来获取所有数据并写入XML文件,而是创建了一种对象图。每个主标签都由一个类表示。例如
类MainTag将具有类Tag1和Tag3的引用。 Tag1类将具有对子类SubTag1,Tag2等的引用。此外,每个类实现IXmlSerializable接口,这使得编写XML文件非常容易且很好地划分。如果XML结构发生变化,则划分类也会有所帮助。
问题:
1)是正确的方法对XML结构分成一组类?
2)由于我有很多类,我必须初始化所有的类结构(对象图)。一旦数据(我想插入到XML中)准备就绪后,我想要开始整个对象图的初始化。一旦初始化完成,我只想使用IXmlSerializable接口编写XML。是否有任何设计模式用于我正在使用的对象初始化类型?目前,我只是在做以下事情。这看起来很奇怪。
class MainTag: XmlBase
{
List<Tag1> Tag1List{ get; set; }
Tag1 t;
public MainTag() : base()
{
t = new Tag1();
//Do processing and populate the properties of MainTag
}
}
class Tag1 : XmlBase
{
List<SubTag1_1> subtags;
SubTag1_1 s;
public Tag1()
{
s = new SubTag1_1();
//Do processing and populate the properties of Tag1
}
}
对象之间的关系不是合成模式吗? –
您建议为每个XMLTag创建一个类。然后创建另一个类,它将充当名为CompositeXMLTag的父级。但是按照复合模式,哪一个类将作为叶子? –
我认为你可以在你有的每个标签中插入子标签,如果是这种情况,你只会有复合类,而不是叶子。 如果例如SubTag1_1和SubTag1_2不接受孩子,他们将是叶类。 –