我有一个 XML(假设它是有效的),我必须解析它并将它存储在树中。
解析它的最佳方法是什么,不使用其他库,仅对字符串进行基本操作?
请记住,我不必验证它,只需将其解析并内存到树中即可。
最佳答案
XML 的基本结构非常简单:
<tagname [attribute[="value"] ...]>content</tagname>
内容可能包含普通文本和更多 XML 结构,或特殊形式
<tagname [attribute[="value"] ...]/>
相当于
<tagname [attribute[="value"] ...]></tagname>
也就是说,。空内容。
因此,如果您不需要解释 DTD 或做其他花哨的事情,您可以执行以下操作:
检查第一个非空白字符是
<
.如果没有,则您没有 XML,只能报错并退出。现在跟在标签名称之后,直到第一个空格,或
/
或>
特点。存储它。如果下一个非空白字符是
/
, 检查它后面是否跟有>
.如果是这样,您就完成了解析并可以返回结果。否则,您将得到格式错误的 XML,并可能会出错退出。如果字符是
>
,那么您就找到了开始标记的结尾。现在跟随内容。继续第 6 步。否则接下来就是争论。解析它,存储结果,然后继续第 3 步。
阅读内容直到找到
<
性格。如果该字符后跟
/
,它是结束标记。检查它后面是否跟有标签名称和>
,如果是,则返回结果。否则,抛出错误。如果您到达这里,您就找到了嵌套 XML 的开头。用这个算法解析它,然后在 6 处继续。
关于c++ - 在没有附加库的情况下在标准 C/C++ 中解析 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8862744/