在C中用libxml2读取xml

时间:2015-01-11 16:00:52

标签: c xml libxml2

我有以下XML文件:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<category>
    <data>
        <ca0>100</ca0>
        <ca1>Spielfilm</ca1>
        <ca2>Spielfilm</ca2>
    </data>
    <data>
        <ca0>200</ca0>
        <ca1>Serie</ca1>
        <ca2>Serie</ca2>
    </data>
</category>

我正在开发一个C程序,它应该读取这个XML文件并将其传输到MySQL数据库中。我看过几个例子,但我没有成功。

要阅读我使用的XML:

reader = xmlReaderForFile("/tmp/category.xml", NULL, 0);
xmlTextReaderRead(reader);
name = xmlTextReaderName(reader);
if (!xmlStrcmp(name, (const xmlChar *) "category"))
{
    xmlTextReaderRead(reader);
    name = xmlTextReaderName(reader);
    if(!xmlStrcmp(name, (const xmlChar*) "data")) {
        xmlTextReaderRead(reader);
        name = xmlTextReaderName(reader);
    }
}

我希望name包含&#34; ca0&#34;,但它是空的。为什么呢?

1 个答案:

答案 0 :(得分:0)

您应该检查节点类型是XNT_ElementXNT_EndElement还是XNT_Text。在任何后跟缩进的元素之后,它可以是XNT_Whitespace类型。

ps:我认为您实际上不能将<data>元素作为上面粘贴的序列。您可能会在XNT_Whitespace之后立即获得第一个<category>

相关问题