0

我正在尝试使用 XML 扫描文本文件,XML 有许多具有这种结构的项目:

<enemy>
  <type> 0 </type>
  <x> 273 </x>
  <y> 275 </y>
  <event> </event>
</enemy>

问题是 xml 可能在标签之间或标签内部有空格。我创建了一个循环,并尝试在每次迭代中进行一次扫描,以将 int 类型、x、y 和 event 分别放入一个变量中。但是我不知道如何忽略空格,也不知道如何处理缺失值,因为某些标签可能有也可能没有值(如事件)。

无论间距和缺失值如何,我如何扫描这个“敌人”?

4

1 回答 1

1

这很简单——您不需要使用fscanf(). 使用真正的 XML 解析器,否则您将得到一个非常复杂的代码,在 80% 的情况下都无法正常工作,要么返回错误数据,要么崩溃。

即使在大多数无害的情况下,XML 格式(尽管看起来很简单)也很复杂,现有的 XML 解析器是有原因的。请参阅libxml或许多其他内容。

尽管如此,如果您一心想自己解析 XML,那么正确的做法是首先对输入进行标记化,然后确保您的标记序列产生正确的形式。这比使用 simple 复杂得多fscanf()

于 2013-10-09T02:45:22.387 回答