php xml parse,PHP xml_parse_into_struct 函数详细解析

函数原型:int xml_parse_into_struct ( resource $parser , string $data , array &$values [, array &$index ] )

参数说明:@param-->$parser XML解析器,由xml_parser_create()生成一个XML资源句柄。

@param-->$data 带解析的XML字符串。

@param--> &$value 解析完成后生成的数据数组。

通常包括:1. 标签名字,例如parse xml sources,则标签名字为:bookname

2. 标签所处状态(或者说是类型),parse xml sources,当解析器读取到,则标签类型为:open(开启状态),当解析器读取到时,则标签类型为:close(闭合状态)

3. 当前元素所处XML解析数的第几层(XML通常被解析为一颗倒置树,根(顶层元素)处于第一层 )比如 parse xml sourcesaaaa, bbbb中,book标签所标记的元素处于解析数的第一层,即level为1, bookname和authors标签所标记的元素都处于解析数的第二层,即level为2

4. 可选的值。在例子parse xml sourcesaaaa, bbbb中,bookname标签所标记的取值为字符串 " parse xml sources" ,authors标签所标记的取值为字符串" aaaa,bbbb" 。 而book标签所标记的元素没有直接的字符结点所以取值为空(或者NULL)

@param-->&$index 解析完成后生成的对应数组$value中元素取值的索引数组,从 0 开始统计。比如在 parse xml sourcesaaaa, bbbb中,所代表的其实标签处于索引数组中的0位置,parse xml sources所代表的结点处于索引数组中的位置为1, aaaa, bbbb所代表的结点在索引数组中的位置为2,所代表的闭合标签所处的位置则为3, 所以book所代表的取值范围为book{0,3},bookname的取值范围为bookname{1}, authors的取值范围为authors{2}

举例:

Alanine ala A hydrophobicLysine lys K chargedXML;$parse = xml_parser_create();xml_parser_set_option($parse, XML_OPTION_CASE_FOLDING, 1);xml_parser_set_option($parse, XML_OPTION_SKIP_WHITE, 1);$val = array();$index = array();xml_parse_into_struct($parse, $xml, $val, $index);echo "";print_r($val);echo "

";print_r($index);echo "";?>

解析结果 Array( [0] => Array ( [tag] => MOLDB [type] => open [level] => 1 ) [1] => Array ( [tag] => MOLECULE [type] => open [level] => 2 ) [2] => Array ( [tag] => NAME [type] => complete [level] => 3 [value] => Alanine ) [3] => Array ( [tag] => SYMBOL [type] => complete [level] => 3 [value] => ala ) [4] => Array ( [tag] => CODE [type] => complete [level] => 3 [value] => A ) [5] => Array ( [tag] => TYPE [type] => complete [level] => 3 [value] => hydrophobic ) [6] => Array ( [tag] => MOLECULE [type] => close [level] => 2 ) [7] => Array ( [tag] => MOLECULE [type] => open [level] => 2 ) [8] => Array ( [tag] => NAME [type] => complete [level] => 3 [value] => Lysine ) [9] => Array ( [tag] => SYMBOL [type] => complete [level] => 3 [value] => lys ) [10] => Array ( [tag] => CODE [type] => complete [level] => 3 [value] => K ) [11] => Array ( [tag] => TYPE [type] => complete [level] => 3 [value] => charged ) [12] => Array ( [tag] => MOLECULE [type] => close [level] => 2 ) [13] => Array ( [tag] => MOLDB [type] => close [level] => 1 ))Array( [MOLDB] => Array ( [0] => 0 [1] => 13 ) [MOLECULE] => Array ( [0] => 1 [1] => 6 [2] => 7 [3] => 12 ) [NAME] => Array ( [0] => 2 [1] => 8 ) [SYMBOL] => Array ( [0] => 3 [1] => 9 ) [CODE] => Array ( [0] => 4 [1] => 10 ) [TYPE] => Array ( [0] => 5 [1] => 11 ))

下面对$index索引数组做进一步分析,比如在上面的例子中():

Alanine ala A hydrophobicLysine lys K charged

比如上例XML中有2个molecule元素,第一个为molecule{1,6},第2个为molecule{7,12}。 同样有两个name元素,第一个为name{2},第2个为name{8},以此类推。

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值