为什么我们必须要有空白 XML 节点的概念?它们为 XML 解析的炼金术带来了什么好处?
这里有一个 Perl 的简单示例XML::LibXML
:
use strict;
use warnings;
use feature 'say';
use XML::LibXML;
my $xml = XML::LibXML->load_xml( string => <<'XMLDOC' );
<alphabet>
<child name='alpha'/>
<child name='bravo'/>
<child name='charlie'/>
<child name='delta'/>
<child name='echo'/>
</alphabet>
XMLDOC
my ( $parent ) = $xml->findnodes( '/alphabet' );
my @all_kids = $parent->childNodes;
my @real_kids = $parent->nonBlankChildNodes;
say 'All kids : ', scalar @all_kids; # '11'
say 'Real kids : ', scalar @real_kids; # '5' => 6 blank child nodes
令我困惑的是,解析器在检索所有子节点和仅检索非空白节点之间进行了区分。
这样看来,这些空白节点必须至少有一个合理的用途。确切地知道这些用途是什么会很有趣。