我目前正在研究node.js
的XML/HTML解析器(如果您感兴趣:链接)。让我开门见山:我需要知道应该如何处理处理指令中的前导空格。它们应该相等吗?
-
<?asdf ?>
-
< ?asdf ?>
-
<? asdf ?>
-
< ? asdf ?>
我猜严格的XML将只允许第一个(但预期的行为是什么?我不想去验证,我想接受我能接受的大多数结构),这更像是一个哲学问题。
提前感谢!
根据XML规范,只允许第一种表示。我想说其他表示应该会导致错误。
您可以添加一些预处理来清除无效结构(删除空白),然后将数据作为XML读取。
这个预处理器会在数据到达XML解析器之前清理数据——它可能是另一个程序。这样,XML解析器只有在输入数据是一半有效的情况下才会得到有效的XML(需要解析的特殊情况较少)。如果解析器仍然遇到错误,则可以假定输入根本不是xml格式的。
例如,在预处理期间,数据将被更改,最终解析为XML:删除假空格(一个预处理器)→猜测结束标签(其他预处理器)→解析为XML关于允许的结构的问题由你的语句来回答,以尽可能多地接受。因为在这种情况下,您将删除<
之后的所有空白,如果后面是?
,则再次删除空白,直到下一个单词-然后作为XML解析。
就我个人而言,我不认为接受大多数结构是可取的。如果您的数据包含错误,则应按错误处理