如何找到以相同名称开头的Xpath节点?
例如,要查找以' rol '开头的所有节点::< rol1 >,< rol2 >和< rol3 >等等?
假设我有以下XML文件,
import React from 'react';
const data = [
{
"userId": 1,
"id": 1,
"title": "One",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
},
{
"userId": 1,
"id": 2,
"title": "Two",
"body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
},
]
const dataTwo = [
{
"id": 1,
"color": "red"
},
{
"id": 2,
"color": "blue"
},
]
class App extends React.Component {
render() {
return (
<div>
{data.map((tweet)=>
<ul key={tweet.id}>
<li>{tweet.title} <b>Color:</b> I want to put the color here</li>
</ul>
)}
</div>
);
}
}
export default App;
我想找到节点&#34; rol1&#34;和&#34; rol2&#34;。实际上,XML文件中可能有6个角色。
问题1:如何通过带有通配符的XPath搜索来实现这一点,例如&#39; role *&#39;? Q2:与布尔运算符匹配&#34; role1&#34;和&#34;角色2&#34;? 问题3:当我使用XPath正则表达式查询单个结果并且没有角色*时,应该找不到任何内容或null。
在我发现的示例中,只有正则表达式用于使用属性进行搜索。
答案 0 :(得分:3)
Q1:如何使用带有'role *'等通配符的XPath搜索?
要查找所有没有命名空间前缀的名称的元素,请以'role'开头,请使用以下表达式:
//*[starts-with(local-name(),'role')]
Q2:布尔运算符匹配“role1”和“role2”?
您可以使用XPath表达式的谓词中的布尔运算符来执行此操作。
(以下示例不会返回有用的结果,仅用于说明目的)
//*[starts-with(local-name(),'role1') and starts-with(local-name(),'role2')]
问题3:当我使用XPath正则表达式查询单个结果并且没有角色*时,应该找不到任何内容或null。
如果没有匹配项,则始终返回空节点集。