Tag: xpath

如何从xpath表达式获取实际的Node顺序(java)

如果我有一个使用preceding-sibling::的XPath表达式,我得到的NodeList不是正确的顺序。 我怎样才能得到正确的订单? 例: hello world !!! 如果我尝试评估XPath表达式: /library/book[3]/preceding-sibling::book ,我得到这个顺序: BOOK1 第二册 但是,如果我尝试评估: /library/book[3]/preceding-sibling::book[1] ,我得到Node : 第二册 那么,我怎样才能从这种表达式中获得真正的顺序: /library/book[3]/preceding-sibling::book ?

XPath表达式不返回//元素,但// *返回计数

我正在使用XOM以及以下示例数据: Element root = cleanDoc.getRootElement(); //find all the bold elements, as those mark institution and clinic. Nodes nodes = root.query(“//*”); Patient Information 以下元素返回许多元素(来自实际数据): //* 但有点像 //head 什么都不返回 如果我遍历根的子节点,数字似乎匹配,如果我打印元素名称,一切看起来都是正确的。 我正在使用HTML,使用tagsoup解析它,然后从结果字符串构建XOM文档。 这部分可能会出现如此可怕的错误? 我觉得这里有一些奇怪的编码问题,但我只是没有看到它。 Java字符串是字符串,对吧?

如何在GPath中按属性值查找元素?

在GPath中,这个XPath //div[@id=’foo’]的替代方法是什么? 一般来说,我可以在哪里找到这份文件?

用于获取表内行的xpath

我有一个像以下的html表: … 我怎么能用xpath获取表行? //tr[contains(@class, ???) 我可以在那里使用OR以某种方式说item-odd | item-even

获取Selenium中所选元素的所有CSS属性的值

假设我通过XPath找到了一个元素: WebElement we = driver.findElement(By.xpath(“some XPath”)); 我知道我可以通过we.getCssValue(“some property”)获取特定CSS属性的值,但是我可以获得所有属性的值而不必明确提及它们的名称吗?

HtmlUnit访问没有id或Name的元素

如何访问此元素: 更多信息:我必须以编程方式访问网页并模拟单击其上的按钮,然后生成一个xml文件,我希望能够保存在本地计算机上。 我试图通过使用HtmlUnit库来实现,但我可以找到的所有示例都使用getElementById()或getElementByName()方法。 不幸的是,这个确切的元素没有名称或Id,所以我失败了。 我当时认为我要做的就是使用getByXPath()方法,但我完全迷失在XPath文档中(这件事对我来说都是新的)。 我被困在这几个小时,所以我真的需要我能得到的所有帮助。 提前致谢。

如何在Selenium中找到具有特定文本的跨度? (使用Java)

我在使用java在Selenium中找到span元素时遇到了麻烦。 HTML看起来像: Settings 而且我尝试了下面没有运气: By.xpath(“span[.=’Settings’]”) 和 By.xpath(“span[text()=’Settings’]”) 和 By.cssSelector(“div[class=’settings-padding’]”)) 以及其他一些类似的尝试。 你能指点我做最好的方法吗? 在它看来我经常在eclipse中得到“无法找到元素”错误。

如何仅签署XML的特定部分

我试图通过只签署部分xml来做一些XML签名但是经过多次搜索后我找不到解决方案。 我使用java来使用Xpath2转换和EXCLUSIVE规范化来签署XML。 如果我有以下XML wsfrwerwerwer addr ND somevalue 354 并签名,我得到以下输出(真实数据替换为虚拟) wsfrwerwerwer addr ND somevalue 354 //*[local-name()=’addr’]/* sdlfjdeklsdfngf femhjgklnlkl swerwerwrwerwerwe 如果我validation签名,一切都很好但是这里的问题就是在此之后我在XML中执行一个XSLT,它对某些元素执行了一些更改,但没有保留原封不动的签名元素( ns0:addr )。 即使我明确地说只应该对“addr”元素进行签名,如果我尝试对其任何父级( payload , msg或addr )执行更改,那么当(根据我的理解)它不应该签名时它会失败。 如果我对其他元素(如标题内的任何内容)执行更改,则签名仍然有效。 我已经测试了XPath表达式( //*[local-name()=’addr’]/* )并且它选择了要签名的正确数据( ns2:data ),但它似乎也采用了导致它的所有元素从根元素开始( msg , addr )。 我也尝试使用不同的转换,例如UNION,但这根本不起作用。 有谁知道问题可能是什么? 在Java中,是否有任何方法可以在签署XML以进行调试时准确查看正在签名的内容? 编辑: 稍后运行的xslt将执行诸如将命名空间从ns0:addr元素移动到根元素(msg)的操作,并且还将主要元素名称和命名空间从msg更改为newmsg(以及不同的默认命名空间),但是签名数据( ns2:data )完好无损。 用于签名的代码或多或少是这里提到的代码http://docs.oracle.com/javase/7/docs/technotes/guides/security/xmldsig/XMLDigitalSignature.html 除了ENVELOPED转换,我使用的是XPATH2转换: Map namespaceMap = new HashMap(0); namespaceMap.put(“ns0”, “http://someaddres/ad/m3”); XPathType xPathType = […]

如何在Selenium WebDriver中使用xPath来获取SVG元素?

我正在使用Selenium WebDriver (Java版)测试基于OpenLayers的API。 我想测试一个使用OpenLayers .Control.ModifyFeature的function。 我想点击绘制的特征(SVG),然后拖动并检查它们是否存在,可见或隐藏。 我画了一个多边形,我选择了它。 见下图: 这些SVG元素的HTML在这里: 假设我想选择红点。 我这样做了: String xpath = “//circle[contains(@id, ‘OpenLayers_Geometry_Point’) AND fill = ‘#990000’]”; List vertices = driver.findElements(By.xpath(xpath)); 但它总是返回一个空列表[] 。 我在这做错了什么? 请问有人帮帮我吗? 非常感谢。 编辑1 – function:verticesAreVisible 在单击操作之前,我想获取元素并检查它们是否可见。 我正在使用这个function。 public static boolean verticesAreVisible(WebDriver driver, String xpath) { List list = driver.findElements(By.xpath(xpath)); if (list.isEmpty()) { return false; } boolean visible = […]

使用Xpath表达式和jaxb解组XML

我是JAXB的新手,想知道是否有一种方法可以将XML解组为我的响应对象但使用xpath表达式。 问题是我打电话给第三方网络服务,我收到的回复有很多细节。 我不希望将XML中的所有细节映射到我的响应对象。 我只想从xml中映射一些细节,使用特定的XPath表达式将其映射到我的响应对象。 是否有注释可以帮助我实现这一目标? 例如,考虑以下响应 1 Ian MG Road 我只对检索街道名称感兴趣所以我想使用xpath表达式使用’root / record / AddressDetails / street’获取street的值并将其映射到我的响应对象 public class Response{ // How do i map this in jaxb, I do not wish to map record,id or name elements String street; //getter and setters …. } 谢谢