php DOMXPath怎么获取和设置子节点值

php DOMXPath怎么获取和设置子节点值,第1张

$xmlDoc = new DOMDocument;

$xmlDoc -> load($xml_resource);

$xpath = new DOMXPath($xmlDoc);

//$advert_path = '/root/advert[@id="1"]';

$statue_path = '/root/advert/status';

//$advert = $xpath -> query($advert_path) ->item(0);

$replaceNodeOld = $xpath -> query($statue_path) ->item(0);

$replaceNodeNew = = $xmlDoc -> createElement('person', 'fff');//改变成它

$replaceNodeOld = $replaceNodeOld -> item(0)->parentNode->replaceChild($replaceNodeNew, $replaceNodeOld ->item(0));

我用的java

List att = xmlConfiggetList("//permission[@module="609"]/@idEnable");

for(int i=0; i<attsize(); i++)

{

String value = ((Attribute)attget(i))getValue();

}

相信写过爬虫的同学,都知道XPath的存在。博主最近在学习 Scrapy 的时候,就了解了一下XPath语法,这里给大家简单地介绍一下:

首先我们需要了解几个 XPath 术语。

2017/3/3 16:02:29

在 XPath 中,有七种类型的节点元素属性、文本、命名空间、处理指令、注释以及文档(根)节点。XML 文档是被作为节点树来对待的。树的根被称为文档节点或者根节点。

以下面这xml文档为例:

上面例子的节点为:

父:每个元素以及属性都有一个父。例子中<student>的父是<class>;

子:元素节点可有零个、一个或多个子。例子中<class>的子是<student>;

兄弟:拥有相同的父的节点。例子中<name>和<ID>是兄弟;

祖先:某节点的父、父的父,等等。

后代:某节点的子、子的子,等等。

基本值是无父或无子的节点。

上面例子的基本值为:

项目是基本值或者节点。

ok,接下来开始正式讲解 XPath 语法(注意,以下表达式当然可以混合使用):

选取此节点的所有子节点。

从根节点选取。

从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。

选取当前节点。

选取当前节点的父节点。

选取属性。

对于如下的xml文档(参照 >

当页面存在两个文件夹,结构相同,只有文件夹名称不同时,想要点击某一个文件夹上的某个控件。这个时候需要使用xpath定位。

1由父节点定位子节点 driverfindElementByXPath(//XCUIElementTypeCell/XCUIElementTypeStaticText[@name="标签"])

String xpath = "/html/body/form/div/table/a";

List<Node> trNodes = docselectNodes(xpath);

for (int i=1;i < trNodessize();i++){

Element trElement = (Element)trNodesget(i);

List<Element> tdList = trElementelements();

Element tdElement1 = tdListget(1);

Element fontElement1 = (Element)tdElement1elements()get(0);

String c1 = fontElement1getText()

}

可以试试

对于网页数据抓取,有BeautifulSoup、lxml以及正则表达式三种方法,其中正则表达式过于复杂,而beautifulsoup和lxml使用起来较为方便。以前简单使用过beautifulsoup(美味汤),后面为了扩展一下,熟悉一下lxml进行数据抓取。

先贴一个lxml的简单框架:

其中,最主要的在于xpath路径的获取和解析,而XPath就是地址,具体地,就是需要知道所要寻找的内容处在哪个地址下。一般而言,我们可以根据开发者工具来定位我们需要的元素,然后右击选择其所在xpath,选择初步的路径,如下图所示,

这只是一种简单的方法,更重要的,需要掌握xpath的语法规则,下面分别论述。

使用xpath获取信息,主要包括获取本文和获取属性,基本用法为

对比可以看出,一个是采用text()获取文本,一个是采用@属性获取属性值。而前面标签后面方括号就是来对标签进行筛选的。一般而言,通过选择器可以获取诸如/html/body/div[@class="useful"]/ul/li/text()的信息,但是开头的信息没有标志性,采用//div[@class="useful"]/ul/li/text()即可。

这个地方即涉及到了xpath的语法选择,主要包括以下几点:

而在选择器方面,包括以下几个

除此之外,在获取了一个元素之后,我们需要获取其下面元素的属性,即要对基于xpath获取的元素再次采用xpath,此时的获取方式为:

另外,我们也可以获取节点下面所有的字符串,方法为string(),示例为:

懒得打字了,下面的截图来自W3Cschool, >

以上就是关于php DOMXPath怎么获取和设置子节点值全部的内容,包括:php DOMXPath怎么获取和设置子节点值、java XPath怎么获取节点属性的值、XPath语法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9791369.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存