我是XML
的初学者,我有此信息:
box1 -> name, colour, from
box2 -> name, weight
box3 -> name, colour, from, weight
我想这样做一个XML
文件:
<boxName>name1
<boxColour>colour1</boxColour>
<boxFrom>from1</boxFrom>
</boxName>
<boxName>name2
<boxColour>colour2</boxColour>
<boxWeight>weight2</boxWeight>
</boxName>
<boxName>name3
<boxColour>colour3</boxColour>
<boxFrom>from3</boxFrom>
<boxWeight>weight3</boxWeight>
</boxName>
我在此形式中使用TinyXml
创建了我的XML
:
TiXmlDocument doc;
TiXmlDeclaration* decl = new TiXmlDeclaration("1.0", "utf-8", "");
doc.LinkEndChild( decl );
TiXmlElement* element = new TiXmlElement("boxName");
doc.LinkEndChild(element);
TiXmlText* text = new TiXmlText("name1");
element->LinkEndChild(text);
TiXmlElement* element2 = new TiXmlElement("boxColour");
TiXmlElement* element3 = new TiXmlElement("boxFrom");
TiXmlText* text2 = new TiXmlText("colour1");
TiXmlText* text3 = new TiXmlText(from1);
element->LinkEndChild(element2);
element->LinkEndChild(element3);
element2->LinkEndChild(text2);
element3->LinkEndChild(text3);
doc.SaveFile( "XML.xml" );
但问题是盒子数量未知,每个盒子可能有1,2,3或更多的孩子,但是每个盒子的格式及其信息是相同的(如上所述)
请帮助我制作XML文件
我正在用C/API
编码谢谢
更新:
我可以以这种形式使用for loop
:
for(int i=0; i<3; i++)
{
TiXmlElement* element2 = new TiXmlElement("element");
TiXmlText* text2 = new TiXmlText("text");
element->LinkEndChild(element2);
element2->LinkEndChild(text2);
}
1:我不能说If one box have weight then use <boxWeight> tag and add <boxWeight>weight2</boxWeight> if not don't have <boxWeight></boxWeight> tag
2:我的盒子信息以这种形式的缓冲区为:
box1 name:name1 coloure: coloure1 from: from1
我不知道如何拆分信息(C/API)
我在大多数地方看到的标准练习是拥有一个可接受格式的架构文件(XSD文件)。
<xs:element name="boxName" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Colour" type="xs:myStringType" minOccurs="0"/>
<xs:element name="From" type="xs:date" minOccurs="0"/>
<xs:element name="Weight" type="xs:int" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
minOccurs
的意思是"此元素是可选的"
maxOccurs="unbounded"
的意思是"尽可能多"
然后,您将进行检查,以确保任何XML符合此模式。
然后,您可以轻松地使用for
循环:
// pseudo-code
for each box,
if colour variable exists, create and add colour element
if weight variable exists, create and add weight element
if from variable exists, create and add from element