2013-10-09 46 views
0

我试图扫描与XML的文本文件,该XML有许多具有这种结构的项目:解析fscanf()忽略空格或缺失值?

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

的问题是,XML可以有标签之间,或者在其内部空间。我创建了一个循环,我试图在每次迭代中执行一次扫描,以便将int类型,x,y和事件分别转换为变量。不过,我不知道如何忽略空格,也不知道如何处理缺少的值,因为一些标记可能有或没有值(如事件)。

我该如何扫描这个“敌人”无间隔和缺失值?

回答

1

这是一个容易的 - 你不要解析XML使用fscanf()。使用一个真正的XML解析器,否则你会得到一个非常复杂的代码,80%的时间无法返回错误的数据或崩溃。

即使在大多数无害的情况下,XML格式(尽管看起来很简单)都很复杂,现有的XML解析器也是有原因的。见libxml或许多其他人。不过,如果你想自己解析XML,那么正确的做法是首先标记输入,然后确保令牌序列的结果是正确的。这比使用简单的fscanf()更复杂。

+0

谢谢,不,我不关心自己解析它,我会检查什么库可用。 – lisovaccaro