当属性包含多个单词时,我在按属性选择节点时遇到问题.例如:
<div class="atag btag" />
Run Code Online (Sandbox Code Playgroud)
这是我的xpath表达式:
//*[@class='atag']
表达式适用于
<div class="atag" />
但不是前一个例子.我该如何选择<div>?
给定像这样的XML结构:
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
Run Code Online (Sandbox Code Playgroud)
我怎么能得到的值lang(这里lang是eng在书名),第一个元素?
XPath bookstore/book[1]选择下的第一个书籍节点bookstore.
如何选择匹配更复杂条件的第一个节点,例如匹配的第一个节点 /bookstore/book[@location='US']
在我的网页中,有div一个class名为Test.
我怎么能找到它XPath?
我想在Java中使用XPath读取XML数据,因此对于我收集的信息,我无法根据我的要求解析XML.
这是我想要做的:
通过URL从在线获取XML文件,然后使用XPath解析它,我想在其中创建两个方法.一个是我输入一个特定的节点属性id,我得到所有的子节点作为结果,第二个假设我只想获得一个特定的子节点值
<?xml version="1.0"?>
<howto>
<topic name="Java">
<url>http://www.rgagnonjavahowto.htm</url>
<car>taxi</car>
</topic>
<topic name="PowerBuilder">
<url>http://www.rgagnon/pbhowto.htm</url>
<url>http://www.rgagnon/pbhowtonew.htm</url>
</topic>
<topic name="Javascript">
<url>http://www.rgagnon/jshowto.htm</url>
</topic>
<topic name="VBScript">
<url>http://www.rgagnon/vbshowto.htm</url>
</topic>
</howto>
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我想读取所有元素,如果我通过@name搜索,还有一个函数,其中我只想要来自@name'Javascript'的url只返回一个节点元素.
如何通过XPath提取属性节点的值?
示例XML文件是:
<parents name='Parents'>
<Parent id='1' name='Parent_1'>
<Children name='Children'>
<child name='Child_2' id='2'>child2_Parent_1</child>
<child name='Child_4' id='4'>child4_Parent_1</child>
<child name='Child_1' id='3'>child1_Parent_1</child>
<child name='Child_3' id='1'>child3_Parent_1</child>
</Children>
</Parent>
<Parent id='2' name='Parent_2'>
<Children name='Children'>
<child name='Child_1' id='8'>child1_parent2</child>
<child name='Child_2' id='7'>child2_parent2</child>
<child name='Child_4' id='6'>child4_parent2</child>
<child name='Child_3' id='5'>child3_parent2</child>
</Children>
</Parent>
</parents>
Run Code Online (Sandbox Code Playgroud)
到目前为止,我有这个XPath字符串:
//Parent[@id='1']/Children/child[@name]
Run Code Online (Sandbox Code Playgroud)
它只返回child元素,但我想拥有name属性的值.
对于我的示例XML文件,这是我想要的输出:
Child_2
Child_4
Child_1
Child_3
Run Code Online (Sandbox Code Playgroud) 我有一个小问题,Xpath包含dom4j ...
让我们说我的XML是
<Home>
<Addr>
<Street>ABC</Street>
<Number>5</Number>
<Comment>BLAH BLAH BLAH <br/><br/>ABC</Comment>
</Addr>
</Home>
Run Code Online (Sandbox Code Playgroud)
假设我想在给定根元素的文本中找到所有具有ABC的节点...
所以我需要写的xpath就是
//*[contains(text(),'ABC')]
然而,这不是Dom4j返回的......这是dom4j问题还是我理解xpath如何工作.因为该查询仅返回Street元素而不返回Comment元素.
DOM使Comment元素成为具有四个标记2的复合元素
[Text = 'XYZ'][BR][BR][Text = 'ABC']
Run Code Online (Sandbox Code Playgroud)
我会假设查询应该仍然返回元素,因为它应该找到元素并运行包含但它不会......
以下查询返回元素,但它返回的远远多于元素,它还返回父元素...这对问题是不可取的...
//*[contains(text(),'ABC')]
Run Code Online (Sandbox Code Playgroud)
是否有任何人知道XPath查询会只返回元素<Street/>和<Comment/>?
我正在寻找类似的东西:
getElementByXpath(//html[1]/body[1]/div[1]).innerHTML
Run Code Online (Sandbox Code Playgroud)
我需要使用JS获取元素的innerHTML(在Selenium WebDriver/Java中使用它,因为WebDriver本身无法找到它),但是如何?
我可以使用ID属性,但并非所有元素都具有ID属性.
[固定]
我正在使用jsoup在Java中完成它.这符合我的需要.
在复杂的JSON数组和哈希中搜索项目时,例如:
[
{ "id": 1, "name": "One", "objects": [
{ "id": 1, "name": "Response 1", "objects": [
// etc.
}]
}
]
Run Code Online (Sandbox Code Playgroud)
我可以用某种查询语言来查找项目in [0].objects where id = 3吗?