xpath 第一个兄弟节点
时间: 2023-07-12 19:58:16 浏览: 69
如果你想获取一个元素节点的第一个兄弟节点,可以使用 XPath 表达式中的 `following-sibling` 轴,结合索引来实现。具体表达式如下:
```
<当前元素节点>/following-sibling::*[1]
```
其中,`<当前元素节点>` 是你想获取其第一个兄弟节点的元素节点,`following-sibling::*` 表示当前元素节点之后的所有兄弟节点,`[1]` 表示取第一个匹配的元素节点。
相关问题
xpath 下一个兄弟节点
要选取一个元素的下一个兄弟节点,可以使用 XPath 中的 following-sibling 轴。具体语法如下:
```
<当前节点>/following-sibling::<节点名称>
```
其中,当前节点是指要选取下一个兄弟节点的节点,节点名称是指要选取的下一个兄弟节点的名称。
举个例子,假设我们有以下 HTML 代码:
```html
<div>
<p>第一个段落</p>
<p>第二个段落</p>
<p>第三个段落</p>
</div>
```
如果我们要选取第一个段落的下一个兄弟节点,也就是第二个段落,可以使用以下 XPath 表达式:
```
//div/p[1]/following-sibling::p
```
这个 XPath 表达式的意思是:在 div 元素下的所有 p 元素中,选取第一个 p 元素之后的所有 p 元素。运行结果就是第二个段落和第三个段落。
分别使用css与xpath语法解析获得yi下内容 (1)获得title标签的内容 (2)获取所有的li标签的内容 (3)获取id="go"的后代节点中的第一个li标签的内容 (4)获取id="go"的后代节点中的最后一个li标签的内容 (5)获取id="go"的后代节点中的第五个li标签的内容 (6)获取head标签的所有后代节点 (7)获取head标签的所有兄弟节点 (8)获取存在id属性的所有标签 (9)获取存在id='testid'的所有标签 (10)获取属性值中存在‘t’的所有标签
以下是使用CSS和XPath语法分别解析获取yi下内容的答案:
HTML代码如下:
```
<html>
<head>
<title>这是标题</title>
</head>
<body>
<ul id="go">
<li>第一个li标签内容</li>
<li>第二个li标签内容</li>
<li>第三个li标签内容</li>
<li>第四个li标签内容</li>
<li>第五个li标签内容</li>
</ul>
<div id="test">
<ul>
<li>第一个li标签内容</li>
<li>第二个li标签内容</li>
<li>第三个li标签内容</li>
<li>第四个li标签内容</li>
<li>第五个li标签内容</li>
</ul>
<p>这是一个段落</p>
</div>
<span id="testid">这是一个span标签</span>
<a href="http://www.test.com">这是一个链接</a>
</body>
</html>
```
1. 使用CSS语法获得title标签的内容
```
document.querySelector('title').textContent;
```
2. 使用CSS语法获取所有的li标签的内容
```
let liList = document.querySelectorAll('li');
let liContentList = [];
for (let i = 0; i < liList.length; i++) {
liContentList.push(liList[i].textContent);
}
console.log(liContentList);
```
3. 使用CSS语法获取id="go"的后代节点中的第一个li标签的内容
```
document.querySelector('#go li:first-child').textContent;
```
4. 使用CSS语法获取id="go"的后代节点中的最后一个li标签的内容
```
document.querySelector('#go li:last-child').textContent;
```
5. 使用CSS语法获取id="go"的后代节点中的第五个li标签的内容
```
document.querySelector('#go li:nth-child(5)').textContent;
```
6. 使用CSS语法获取head标签的所有后代节点
```
let headNodes = document.querySelectorAll('head *');
console.log(headNodes);
```
7. 使用CSS语法获取head标签的所有兄弟节点
```
let headSiblings = document.querySelectorAll('head ~ *');
console.log(headSiblings);
```
8. 使用CSS语法获取存在id属性的所有标签
```
let idElements = document.querySelectorAll('[id]');
console.log(idElements);
```
9. 使用CSS语法获取存在id='testid'的所有标签
```
let testidElements = document.querySelectorAll('[id="testid"]');
console.log(testidElements);
```
10. 使用CSS语法获取属性值中存在‘t’的所有标签
```
let tElements = document.querySelectorAll('[*="t"]');
console.log(tElements);
```
1. 使用XPath语法获得title标签的内容
```
document.evaluate('//title', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.textContent;
```
2. 使用XPath语法获取所有的li标签的内容
```
let liList = document.evaluate('//li', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
let liContentList = [];
for (let i = 0; i < liList.snapshotLength; i++) {
liContentList.push(liList.snapshotItem(i).textContent);
}
console.log(liContentList);
```
3. 使用XPath语法获取id="go"的后代节点中的第一个li标签的内容
```
document.evaluate('//*[@id="go"]/li[1]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.textContent;
```
4. 使用XPath语法获取id="go"的后代节点中的最后一个li标签的内容
```
document.evaluate('//*[@id="go"]/li[last()]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.textContent;
```
5. 使用XPath语法获取id="go"的后代节点中的第五个li标签的内容
```
document.evaluate('//*[@id="go"]/li[5]', document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue.textContent;
```
6. 使用XPath语法获取head标签的所有后代节点
```
let headNodes = document.evaluate('//head//*', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
console.log(headNodes);
```
7. 使用XPath语法获取head标签的所有兄弟节点
```
let headSiblings = document.evaluate('//head/following-sibling::*', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
console.log(headSiblings);
```
8. 使用XPath语法获取存在id属性的所有标签
```
let idElements = document.evaluate('//*[@id]', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
console.log(idElements);
```
9. 使用XPath语法获取存在id='testid'的所有标签
```
let testidElements = document.evaluate('//*[@id="testid"]', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
console.log(testidElements);
```
10. 使用XPath语法获取属性值中存在‘t’的所有标签
```
let tElements = document.evaluate('//*[contains(@*, "t")]', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
console.log(tElements);
```
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_lunwen.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
html = """ <!DOCTYPE html> <html> <head> <title>xpath test</title> </head> <body> 时间 地点 任务 这里是个小标题 1 2 3 84 104 223 这里是H3的内容 百度一下 test1 test2 1 2 3 4 5 6 7 8 9 10 这里是H3 -2的内容 </body> </html> """ 三、实验步骤 分别使用css与xpath语法解析获得yi下内容 (1)获得title标签的内容 (2)获取所有的li标签的内容 (3)获取id="go"的后代节点中的第一个li标签的内容 (4)获取id="go"的后代节点中的最后一个li标签的内容 (5)获取id="go"的后代节点中的第五个li标签的内容 (6)获取head标签的所有后代节点 (7)获取head标签的所有兄弟节点 (8)获取存在id属性的所有标签 (9)获取存在id='testid'的所有标签 (10)获取属性值中存在‘t’的所有标签
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)