xpath对XML的操作

XPath 使用路径表达式在 XML 文档中选取节点。节点是通过沿着路径或者 step 来选取的。

下面列出了最有用的路径表达式:


在下面的表格中,我们已列出了一些路径表达式以及表达式的结果:


在下面的表格中,我们列出了带有谓语的一些路径表达式,以及表达式的结果:


例子:

1. 获取选择题的section

xml格式如下:

<?xml version="1.0" encoding="UTF-8"?>
<paper name="2012年普通高等学校招生全国统一考试语文(北京卷)" subject="Chinese" id="2012BeijingGaokao" info="本试卷共8页,150分。考试时长150分钟。">
	<section name="一、本大题共5小题。每小题3分,共15分。" score="15">
		<questions score="15">
			<question id="2012BeijingGaokao_01" score="3" type="select">
				<text>下列词语中,字形和加点字的读音全部都正确的一项是__</text>
				<select multiple="false" format="html">	
					<option value="A">
					辍笔$$谈笑风生$$<point>间</point>(jiàn)或$$李代桃<point>僵</point>(jiáng)
					</option>
					<option value="B">
					针灸$$仗义执言$$<point>蹙</point>(chù)额$$毛骨<point>悚</point>(sòng)然
					</option>
					<option value="C">
					蹂躏$$再接再励$$<point>檄</point>(xí)文$$百<point>舸</point>(gě)争流
					</option>
					<option value="D">
					垫付$$绿草如茵$$游<point>说</point>(shuǐ)$$乳<point>臭</point>(chòu)未干
					</option>
				</select>
			</question>
		</questions>
	</section>
	<section name="二、本大题共4小题,每小题3分,共12分。" score="12"> 
		<text>阅读下面的文言文,完成6-9题。</text>
		<questions score="16">
			<question id="2012BeijingGaokao_06" score="3" type="select">
					<text format="html">下列语句中,加点的词解释<point>不正确</point>的一项是__</text>
					<select multiple="false" format="html">	
						<option value="A">闻君义甚高,愿<point>假</point>榻$$借用</option>
						<option value="B">景淳<point>竟</point>死$$居然</option>
						<option value="C">反<point>赆</point>以货,遗归$$赠送</option>
						<option value="D">人用是<point>多</point>疑名$$称赞</option>
					</select>
			</question>
		</questions>
	</section>
	<section name="三、本大题共有4个小题,共30分。" score="12">
	</section>
</paper>
$paper_content=simplexml_load_file('./content/'.$paper_content_path);
$selectSections=$paper_content->xpath("/paper/section[1]");
dd($selectSections);
结果如下:


注意:通过xpath取得的都是集合。

再获取集合的第一个元素。

$selectSection=$selectSections[0];
dd($selectSection);

2. 获取具体的选择题

从当前路径开始获取

$arr_sel_que=$selectSection->xpath(".//question");
dd($arr_sel_que);
结果:


3. 获取文本的方法

<question id="2015BeijingGaokao_01" score="3" type="select">
	<text format="html">根据“材料一”,下列对中国印刷业面临“巨大的危机和挑战”的原因,概括<point>不正确</point>的一项是__</text>
	<select multiple="false">
		<option value="A">研究进程的落后</option>
		<option value="B">计算机的历史短</option>
		<option value="C">汉字自身的特征</option>
		<option value="D">技术条件不具备</option>
	</select>
</question>
php代码:

if((string)$que['type']=='select'){
   $sel_options=$que->select->xpath('.//option');
   foreach($sel_options as $sel_option){
          echo $sel_option.'<br/>';
           //dd($sel_option);
     }
     dd($sel_options);
}
结果如下:





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值