标签: xpath

XPath查找没有id或类的元素

如何获取没有id属性的所有tr元素?

<tr id="name">...</tr>
<tr>...</tr>
<tr>...</tr>
Run Code Online (Sandbox Code Playgroud)

谢谢

xpath

75
推荐指数
3
解决办法
6万
查看次数

如果兄弟节点具有特定值,如何使用XPath选择节点?

我有以下文件:

<a>
  <bb>abc</bb>
  <cc>ccc</cc>
  <dd>ddd</dd>
</a>
<a>
  <bb>zz</bb>
  <cc>1</cc>
  <dd>2</dd>
</a>
Run Code Online (Sandbox Code Playgroud)

<cc>如果<bb>是,我怎样才能获得使用XPath 的价值zz

xml xpath

74
推荐指数
5
解决办法
8万
查看次数

XPath只返回包含文本的元素,而不返回其父元素

在这个xml中,我想匹配,包含'match'的元素(random2元素)

<root>
 <random1>
  <random2>match</random2>
  <random3>nomatch</random3>
 </random1>
</root>
Run Code Online (Sandbox Code Playgroud)

好的,到目前为止我有:

//[re:test(.,'match','i')] (with re in the proper namespace)
Run Code Online (Sandbox Code Playgroud)

这会返回random2,random1和root ...我想只获得"random2"

有任何想法吗?

xml xpath

71
推荐指数
1
解决办法
13万
查看次数

cssSelector和Xpath有什么区别,哪个在跨浏览器测试的性能方面更好?

我正在使用Selenium WebDriver 2.25.0进行多语言Web应用程序,主要测试页面内容(适用于阿拉伯语,英语,俄语等不同语言).

对于我的应用程序,根据性能更好,并确保它应该支持所有的浏览器(即IE 7,8,9,FF,Chrome等).

提前感谢您的宝贵建议.

selenium xpath webdriver css-selectors selenium-webdriver

71
推荐指数
3
解决办法
9万
查看次数

使用xpath获取节点的第N个子节点

我的示例输入XML是:

<root>
 <a>
   <b>item</b>
   <b>item1</b>
   <b>item2</b>
   <b>item3</b>
   <b>item4</b>
 </a>
</root>
Run Code Online (Sandbox Code Playgroud)

我想选择一个b位置是变量值的节点.

如何使用变量的值来测试节点的位置?

xml xpath

69
推荐指数
2
解决办法
6万
查看次数

如何选择具有特定属性的所有元素?使用TinyXPath

选择具有属性A的所有元素的XPath表达式是什么?

const char* xpath = "//\*/\*[@A]"
Run Code Online (Sandbox Code Playgroud)

xml xpath tinyxpath

68
推荐指数
1
解决办法
5万
查看次数

XPath ::获取以下兄弟姐妹

我有以下HTML结构:我正在尝试构建一个强大的方法来提取第二个颜色摘要元素,因为DOM中会有很多这样的标记.

<table>
  <tbody>
    <tr bgcolor="#AAAAAA">
    <tr>
    <tr>
    <tr>
    <tr>
      <td>Color Digest </td>
      <td>AgArAQICGQMVBBwTIRQHIwg0GUMURAZTBWQJcwV0AoEDAQ </td>
    </tr>
    <tr>
      <td>Color Digest </td>
      <td>2,43,2,25,21,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, </td>
    </tr>
  </tbody>
</table>
Run Code Online (Sandbox Code Playgroud)

我试图提取具有解码值的第二个"颜色摘要"td元素.

我写了下面的xpath,但没有得到第二个我没有得到第二个td元素.

//td[text() = ' Color Digest ']/following-sibling::td[2]
Run Code Online (Sandbox Code Playgroud)

当我把它改为td [2]到td [1]时,我得到了两个元素.

html xpath siblings scraper

68
推荐指数
2
解决办法
19万
查看次数

使用XPath,如何根据文本内容和属性值选择节点?

鉴于此XML:

<DocText>
<WithQuads>
    <Page pageNumber="3">
        <Word>
            July
            <Quad>
                <P1 X="84" Y="711.25" />
                <P2 X="102.062" Y="711.25" />
                <P3 X="102.062" Y="723.658" />
                <P4 X="84.0" Y="723.658" />
            </Quad>
        </Word>
        <Word>
        </Word>
        <Word>
            30,
            <Quad>
                <P1 X="104.812" Y="711.25" />
                <P2 X="118.562" Y="711.25" />
                <P3 X="118.562" Y="723.658" />
                <P4 X="104.812" Y="723.658" />
            </Quad>
        </Word>
    </Page>
</WithQuads>
Run Code Online (Sandbox Code Playgroud)

我想找到具有'July'文本和Quad/P1/X属性大于90的节点.因此,在这种情况下,它不应该返回任何匹配.但是,如果我使用GT(>)或LT(<),我会在第一个Word元素上得到匹配.如果我使用eq(=),我得不到匹配.

所以:

//Word[text()='July' and //P1[@X < 90]]
Run Code Online (Sandbox Code Playgroud)

将会返回true

//Word[text()='July' and //P1[@X > 90]]
Run Code Online (Sandbox Code Playgroud)

如何在P1 @ X属性上正确约束?

另外,想象一下,我有多个Page元素,用于不同的页码.我如何另外约束上面的搜索以找到节点text()='July', P1@X < 90和Page @pageNumber=3

xml xpath xquery

66
推荐指数
2
解决办法
9万
查看次数

xpath中不区分大小写的匹配?

例如,对于下面的xml

<CATALOG>
    <CD title="Empire Burlesque"/>
    <CD title="empire burlesque"/>
    <CD title="EMPIRE BURLESQUE"/>
    <CD title="EmPiRe BuRLeSQuE"/>
    <CD title="Others"/>
<CATALOG>
Run Code Online (Sandbox Code Playgroud)

如何将前4条记录与xpath匹配//CD[@title='empire burlesque'].是否有xpath函数来执行此操作?其他解决方案,如PHP函数也被接受.

xml xpath

66
推荐指数
5
解决办法
10万
查看次数

为什么XmlNamespaceManager是必需的?

我想出有点干,以为什么 -至少在.Net框架-这是必要使用XmlNamespaceManager,以处理命名空间(或相当笨重和详细[local-name()=...的XPath谓词/功能/等等)时执行XPath查询.我确实理解为什么命名空间是必要的或至少是有益的,但为什么它如此复杂?

为了查询简单的XML文档(没有命名空间)...

<?xml version="1.0" encoding="ISO-8859-1"?>
<rootNode>
   <nodeName>Some Text Here</nodeName>
</rootNode>
Run Code Online (Sandbox Code Playgroud)

...可以使用类似的东西doc.SelectSingleNode("//nodeName")(可以匹配<nodeName>Some Text Here</nodeName>)

神秘#1:我的第一个烦恼 - 如果我理解正确 - 只是添加一个命名空间引用到父/ root标记(无论是否用作子节点标记的一部分),如下所示:

<?xml version="1.0" encoding="ISO-8859-1"?>
<rootNode xmlns="http://someplace.org">
   <nodeName>Some Text Here</nodeName>
</rootNode>
Run Code Online (Sandbox Code Playgroud)

...需要几行额外的代码来获得相同的结果:

Dim nsmgr As New XmlNamespaceManager(doc.NameTable)
nsmgr.AddNamespace("ab", "http://s+omeplace.org")
Dim desiredNode As XmlNode = doc.SelectSingleNode("//ab:nodeName", nsmgr)
Run Code Online (Sandbox Code Playgroud)

...本质上是梦想一个不存在的前缀(" ab")来找到一个甚至不使用前缀的节点.这有什么意义?有什么问题(概念上)doc.SelectSingleNode("//nodeName")

神秘#2:所以,假设你有一个使用前缀的XML文档:

<?xml version="1.0" encoding="ISO-8859-1"?>
<rootNode xmlns:cde="http://someplace.org" xmlns:feg="http://otherplace.net">
   <cde:nodeName>Some Text Here</cde:nodeName>
   <feg:nodeName>Some Other Value</feg:nodeName> …
Run Code Online (Sandbox Code Playgroud)

.net xpath xml-namespaces selectsinglenode

66
推荐指数
3
解决办法
3万
查看次数