用fscanf()解析忽略空格或缺少值?

时间:2013-10-09 02:43:19

标签: c++ xml

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

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

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

我如何扫描这个&#34;敌人&#34;没有间距和缺失值?

1 个答案:

答案 0 :(得分:1)

这很简单 - 您使用fscanf()解析XML。使用真正的XML解析器,否则你将得到一个非常复杂的代码,80%的时间都无法返回错误的数据或崩溃。

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

但是,如果你自己一心想解析XML,那么正确的做法是首先对输入进行标记,然后确保令牌序列产生正确的形式。这比使用简单fscanf()更复杂。