您好我的作业是使用c构建一个xml解析器。我坚持如何找到xml文件的根,还应该检查root的结束标记是否在xml文件中。
答案 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词法对象(例如标记,注释,处理指令,属性等)。