加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

是否有任何空白子节点用于XML解析器?

发布时间:2020-12-16 23:21:40 所属栏目:百科 来源:网络整理
导读:为什么我们必须有空白 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
为什么我们必须有空白 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

让我感到困惑的是,解析器区分了检索所有子节点和非空节点.

那么这些空白节点必须至少有一个合理的用途.确切地知道这些用途是什么会很有趣.

解决方法

从HTML中考虑这种情况:

<div><b>hello</b><i>world</i></div>

vs这一个:

<div>
    <b>hello</b>
    <i>world</i>
</div>

在第一个示例中,没有空白节点,渲染引擎不会在helloworld之间放置空格.在第二个例子中,由于文本节点之间有一个空白节点,它将作为hello world出现.

你需要知道那里有空白节点,因为一些XML语言会关心它们的位置.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读