C:如何使用默认格式创建XML文件



我是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

相关内容

  • 没有找到相关文章

最新更新