标签: xpath

获取XPath到XElement?

我在文档中有一个XElement.给定XElement(和XDocument?),是否有一个扩展方法来获取其完整(即绝对,例如/root/item/element/child)XPath?

例如myXElement.GetXPath()?

编辑:好的,看起来我忽略了一些非常重要的事情.哎呦!需要考虑元素的索引.请参阅我对修正后的解决方案的最后答案.

c# xml xelement xpath

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

XPath与属性值上的正则表达式匹配

全部 -

为了破解这个问题,我已经搜索并修整了几个小时,但我仍然遇到问题.我有以下XML数据:

<game id="2009/05/02/arimlb-milmlb-1" pk="244539">
  <team id="109" name="Arizona" home_team="false">
    <event number="9" inning="1" description="Felipe Lopez doubles to left fielder Chris Duffy.  "/>
    <event number="15" inning="1" description="Augie Ojeda flies out to center fielder Mike Cameron.  "/>
    <event number="23" inning="1" description="Chad Tracy doubles to right fielder Joe Sanchez.  "/>
    <event number="52" inning="2" description="Mark Reynolds lines out to left fielder Chris Duffy.  "/>
    <!-- more data here -->
  </team>
</game>
Run Code Online (Sandbox Code Playgroud)

我试图在description属性的值中获取包含文本"double"的事件节点的总数.这是我到目前为止所尝试的,无济于事(irb抛出错误):

"/game/team/event/@description[matches(.,' doubles ')]"
Run Code Online (Sandbox Code Playgroud)

因为我只是想匹配description属性值的一个片段,所以可以使用XPath 2.0函数'匹配',对吗?如果是这样,我做错了什么?

在此先感谢您的帮助!

regex xpath attributes

42
推荐指数
2
解决办法
8万
查看次数

SelectSingleNode使用XPath为已知良好的xml节点路径返回null

考虑这个简单的XML文档.这里显示的序列化XML是来自复杂POCO对象的XmlSerializer的结果,该对象的模式我无法控制.

<My_RootNode xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="">
  <id root="2.16.840.1.113883.3.51.1.1.1" extension="someIdentifier" xmlns="urn:hl7-org:v3" /> 
  <creationTime xsi:nil="true" xmlns="urn:hl7-org:v3" />      
</My_RootNode>
Run Code Online (Sandbox Code Playgroud)

目标是在id节点上提取扩展属性的值.在这种情况下,我们使用SelectSingleNode方法,并给出一个XPath表达式:

XmlNode idNode = myXmlDoc.SelectSingleNode("/My_RootNode/id");
//idNode is evaluated to null at this point in the debugger!
string msgID = idNode.Attributes.GetNamedItem("extension").Value;
Run Code Online (Sandbox Code Playgroud)

问题是该SelectSingleNode方法为给定的XPath表达式返回null.

问题:关于此XPath查询的正确性的任何想法,或者为什么此方法调用+ XPath表达式将返回空值?也许命名空间是问题的一部分?

c# xml xpath

41
推荐指数
4
解决办法
10万
查看次数

如何选择节点的第一个子名称?XPath的

我有一个XML,我必须从中选择其中一个节点的子名称.我是一个初学者,所以我没有找到Xpath表达式来做到这一点.我知道节点的级别

姓名来自 /Employee/Department/

但是部门有儿童名字不明的节点.我必须选择Department节点的第一个子节点.我怎样才能做到这一点?

xpath children

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

如何使用XPath表达式选择所有叶节点?

我相信这是可能的,但无法弄清楚语法.像这样的东西:

xmlNode.SelectNodes("//*[count(child::*) <= 1]")
Run Code Online (Sandbox Code Playgroud)

但这不正确.

syntax xpath selectnodes

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

直接在节点中选择文本,而不是在子节点中

如何在不选择子节点中的文本的情况下检索节点中的文本?

<div id="comment">
     <div class="title">Editor's Description</div>
     <div class="changed">Last updated: </div>
     <br class="clear">
     Lorem ipsum dolor sit amet.
</div>
Run Code Online (Sandbox Code Playgroud)

换句话说,我想要Lorem ipsum dolor sit amet.而不是Editor's DescriptionLast updated: Lorem ipsum dolor sit amet.

xpath xquery

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

41
推荐指数
2
解决办法
7万
查看次数

在selenium中定位WebElements的子节点

我正在使用selenium来测试我的Web应用程序,我可以使用成功找到标签By.xpath.但是现在我需要在该节点中找到子节点.

例:

<div id="a">
    <div>
        <span />
        <input />
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我可以:

WebElement divA = driver.findElement( By.xpath( "//div[@id='a']" ) )
Run Code Online (Sandbox Code Playgroud)

但现在我需要找到输入,所以我可以这样做:

driver.findElement( By.xpath( "//div[@id='a']//input" ) )
Run Code Online (Sandbox Code Playgroud)

但是在代码中我只有divA,而不是它的xpath ...我想做这样的事情:

WebElement input = driver.findElement( divA, By.xpath( "//input" ) );
Run Code Online (Sandbox Code Playgroud)

但是这样的功能不存在.我能这样做吗?

顺便说一句:有时候我需要找到一个<div>具有某种后代节点的东西.我怎样才能在xpath中询问"包含带有文本'hello world'的跨度的div-tag"?

java selenium xpath webdriver

41
推荐指数
2
解决办法
11万
查看次数

Selenium WebDriver:使用XPath单击SVG中的元素

我有一个带有几个圆形和矩形元素的SVG对象.使用webdriver,我可以单击主svg对象,但不能单击其中的任何元素.问题似乎只是点击(或任何鼠标交互),因为我可以使用getAttribute()返回宽度,ID,x/y,文本等的值,以及它下面的任何内容.

以下是HTML的示例:

    <div id="canvas">
        <svg height="840" version="1.1" width="757" xmlns="http://www.w3.org/2000/svg" style="overflow: hidden; position: relative;">
            <image x="0" y="0" width="757" height="840" preserveAspectRatio="none">
            <circle cx="272.34" cy="132.14">
            <rect x="241.47" y="139.23">
            <text style="text-anchor: middle; x="272.47" y="144.11">
        </svg>
    </div>
Run Code Online (Sandbox Code Playgroud)

并且WebDriver尝试右键单击矩形元素(并失败)的示例:

    WebElement mapObject = driver.findElement(By.xpath("//*[name()='svg']/*[name()='rect']"));
    Actions builder = new Actions(driver);
    builder.contextClick(mapObject).perform();
Run Code Online (Sandbox Code Playgroud)

但这可以工作并返回一个值:

    driver.findElement(By.xpath("//*[name()='svg']/*[name()='rect']")).getAttribute("x");    
Run Code Online (Sandbox Code Playgroud)

当WebDriver出错时,通常是这样的:

    org.openqa.selenium.WebDriverException: '[JavaScript Error: "a.scrollIntoView is not a function" {file: "file:///var/folders/sm/jngvd6s97ldb916b7h25d57r0000gn/T/anonymous490577185394048506webdriver-profile/extensions/fxdriver@googlecode.com/components/synthetic_mouse.js" line: 8544}]' when calling method: [wdIMouse::move]
Run Code Online (Sandbox Code Playgroud)

我花了一些时间研究这个问题,它似乎是Selenium和SVG的一个常见问题,但是我想知道是否有解决方法.我发现的唯一解决方案是与SVG本身进行交互,我已经可以做了.

我正在使用Selenium 2.28(并尝试使用2.29)w/Java + Firefox 17.

任何想法都非常感激.

java firefox selenium xpath webdriver

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

如何使用selenium java webdriver选择复选框?

如何使用id/xpath检查复选框.有没有类似于selecttext by selecttext的方法.

通过给出所有其他相关问题的示例,我找不到一个正确的解决方案,以简洁的方式工作,通过几行或方法我可以检查chekbox或单选按钮.

任何帮助,将不胜感激.

HTML示例部分如下:

<tbody> 
<tr> 
    <td> 
        <span class="120927"> 
        <input id="ctl00_CM_ctl01_chkOptions_0" type="checkbox" name="ctl00$CM$ctl01$chkOptions$0"/> 
        <label for="ctl00_CM_ctl01_chkOptions_0">housingmoves</label> 
        </span> 
    </td> 
</tr> 
<tr>
    <td>
        <span class="120928"> 
        <input id="ctl00_CM_ctl01_chkOptions_1" type="checkbox" name="ctl00$CM$ctl01$chkOptions$1"/> 
        <label for="ctl00_CM_ctl01_chkOptions_1">Seaside & Country Homes</label> 
        </span> 
    </td> 
</tr> 
</tbody> 
Run Code Online (Sandbox Code Playgroud)

selenium xpath webdriver selenium-webdriver

40
推荐指数
5
解决办法
24万
查看次数