如何使用C在XML文件中获取根

时间:2011-10-14 06:55:33

标签: c xml

您好我的作业是使用c构建一个xml解析器。我坚持如何找到xml文件的根,还应该检查root的结束标记是否在xml文件中。

1 个答案:

答案 0 :(得分:2)

简单来说,根元素是您将在XML文件中遇到的第一个元素。它也应该是最外层的唯一元素。

在XML中,元素是严格嵌套的,因此要检测根元素的结束标记,您将需要一堆已找到的开始标记,以便正确跟踪它们是否已正确关闭。我想你的算法看起来像是:

get first XML thing
while not end of file and not error
    if thing is a comment or processing instruction or straight text
        ignore it // Let's not get complicated yet!
    else if thing is a start tag
        push the tag on the stack
        if thing is the *first* start tag
            root element
    else if thing is an end tag
        if the stack is empty
            error
        else if it does not match the tag on the top of the stack
            error
        else
            pop the top element from the stack
            if the stack is now empty
                closing tag for root element
    get next XML thing
if no error 
    if stack is empty
        finished OK
    else
        error

顺便说一下,这很容易。如果要正确执行此操作,则需要编写一个tokeniser来为您提供XML词法对象(例如标记,注释,处理指令,属性等)。