我有一个XML(假设它是有效的),我必须解析它并将其存储在树中。

什么是解析字符串的最佳方法,而不使用其他库,而只是对字符串的基本操作?

请记住,我不必验证它,只需将其解析并存储到树中即可。

最佳答案

XML的基本结构非常简单:

<tagname [attribute[="value"] ...]>content</tagname>

其中的内容可能同时包含普通文本和更多XML结构或特殊形式
<tagname [attribute[="value"] ...]/>

相当于
<tagname [attribute[="value"] ...]></tagname>

那是,。空内容。

因此,如果您不需要解释DTD或做其他花哨的事情,则可以执行以下操作:
  • 检查第一个非空白字符是<。如果没有,则您没有XML,只能给出一个错误然后退出。
  • 现在跟随标记名称,直到第一个空格,或者/>字符。储存。
  • 如果下一个非空白字符是/,请检查其后是否有>。如果是这样,则说明您已完成解析并可以返回结果。否则,您的XML格式不正确,可能会退出并出现错误。
  • 如果字符是>,那么您已经找到了begin标签的结尾。现在遵循的内容。继续执行步骤6。
  • 否则,后面是一个参数。解析该结果,存储结果,然后继续执行步骤3。
  • 阅读内容,直到找到<字符。
  • 如果该字符后跟/,则为结束标记。检查其后是否有标签名称和>,如果是,则返回结果。否则,抛出错误。
  • 如果您到达这里,那么您已经找到了嵌套XML的开头。使用此算法对此进行解析,然后继续执行6。
  • 09-25 19:34
    查看更多