标签: xpath

选择一系列节点的xpath是什么?

嗨,我有一个XML文件,其结构如下:

 <foo>
     <bar></bar>
     <bar></bar>
     ...
</foo>
Run Code Online (Sandbox Code Playgroud)

我不知道如何抓取一系列节点.有人可以给我一个抓取条形节点100-200的xpath表达式的例子.

xml xpath

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

如何使用Xpath检索XML文件中的命名空间

我有一个XML文件,如下所示:

<Elements name="Entities" xmlns="XS-GenerationToolElements">
Run Code Online (Sandbox Code Playgroud)

我将不得不打开很多这些文件.每个命名空间都有不同的命名空间,但一次只有一个命名空间(我永远不会在一个xml文件中找到两个命名空间).

使用XPath我想有一种自动方式将给定的命名空间添加到命名空间管理器.到目前为止,我只能通过解析xml文件来获取命名空间,但我有一个XPathNavigator实例,它应该有一个很好的,干净的方式来获取命名空间,对吧?

- 要么 -

鉴于我只有一个命名空间,以某种方式使XPath使用xml中唯一存在的命名空间,从而通过始终附加命名空间来避免混乱代码.

xml xpath namespaces

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

最好的XPath工具

你们为XPath使用了什么工具?为什么?现在我正在使用

SketchPath似乎对我来说最为突出,因为它实际上可以帮助您创建xpath并且它非常先进.如果你还没有尝试过,你应该这样做.

缺点是SketchPath:你必须在机器上安装它,否则它太棒了.

对WhiteBeam的缺点:你必须上传你出于安全原因我并不总是想做的文件,你可以上传的文件大小有一些限制,上传文件很烦人.另外我认为用于该工具的xpath与运行.NET应用程序之间可能存在一些细微差别.但是现在不记得了.请记住它.

xpath devtools

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

XPath:选择所有以下兄弟姐妹,直到另一个兄弟姐妹

这是我的xml的摘录:

<node/>
<node/>
<node id="1">content</node>
<node/>
<node/>
<node/>
<node id="2">content</node>
<node/>
<node/>
Run Code Online (Sandbox Code Playgroud)

我定位于node[@id='1'].我需要一个Xpath来匹配所有<node/>元素,直到下一个非空节点(这里node[@id='2']).


编辑: @id属性只是为了更清楚地解释我的问题,但不是我原来的XML.我需要一个不使用@id属性的解决方案.


希望空的兄弟姐妹后匹配node[@id='2'],所以我不能用天真following-sibling::node[text()=''].

我怎样才能做到这一点?

xpath

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

从XML节点java生成/获取xpath

我对建议/ 代码/解释而不是实际实现感兴趣.

  • 我想通过xml文档,它的所有节点
  • 检查节点是否存在属性

如果节点没有属性,则get/generate String with value of its xpath
情况如果节点具有属性,则迭代通过属性列表并为包括节点的每个属性创建xpath.

忠告?希望你能提供一些有用的英特尔

编辑:

这样做的原因是..我正在用jmeter编写自动化测试,所以对于我需要验证请求实际完成其工作的每个请求,所以我通过使用xpath获取节点值来声明结果.(额外信息 - 不相关)

当请求很小时,手动创建断言并不是问题,但对于较大的请求,它真的很痛苦...(额外信息 - 不相关)

BOUNTY:

我正在寻找Java方法

目标

我的目标是从这个ex xml文件中实现以下目标:

<root>
    <elemA>one</elemA>
    <elemA attribute1='first' attribute2='second'>two</elemA>
    <elemB>three</elemB>
    <elemA>four</elemA>
    <elemC>
        <elemB>five</elemB>
    </elemC>
</root>
Run Code Online (Sandbox Code Playgroud)

产生以下内容:

//root[1]/elemA[1]='one'
//root[1]/elemA[2]='two'
//root[1]/elemA[2][@attribute1='first']
//root[1]/elemA[2][@attribute2='second']
//root[1]/elemB[1]='three'
//root[1]/elemA[3]='four'
//root[1]/elemC[1]/elemB[1]='five'
Run Code Online (Sandbox Code Playgroud)

解释:

  • 如果节点值/文本不为null/0,则获取xpath,add ='nodevalue'以进行断言
  • 如果node具有属性,则也为它们创建断言

BOUNTY UPDATE:

我发现这个例子,它没有产生正确的结果,但我看起来像这样:

http://www.coderanch.com/how-to/java/SAXCreateXPath

java xml xslt xpath

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

XSL if else条件

我有一个要求,我想要if else语句检查一个节点是否有属性或它只有字符串.

例如:节点中的1个具有0 File(s) found,而另一个具有诸如的属性<autoincludesystem_info mdate='08/23/2011' mtime='09:51' ampm='PM' filesize='64' filename='AFP_p.tgp' />

下面是两个节点的示例

<product>
<autoIncludeUser>0 File(s) found</autoIncludeUser>
<autoIncludeSystem>
<autoincludesystem_info mdate='08/23/2011' mtime='09:51' ampm='PM' filesize='64' filename='AFP_p.tgp' />
<autoincludesystem_info mdate='08/23/2011' mtime='09:51' ampm='PM' filesize='3,879' filename='AnalystsExpressionMacros.tgp' />
<autoincludesystem_info mdate='08/23/2011' mtime='09:51' ampm='PM' filesize='475' filename='base64Converter.tgp' />
<autoincludesystem_info mdate='08/23/2011' mtime='09:51' ampm='PM' filesize='&lt;DIR&gt;' filename='codePages' />
</autoIncludeSystem>
<autoIncludeStudio>0 File(s) found</autoIncludeStudio>
<externalLibrarySystem>
<externalLibrarySystem_info mdate='08/23/2011' mtime='09:52' ampm='PM' filesize='196,608' filename='AFPtoXML_DP.dll' />
<externalLibrarySystem_info mdate='08/23/2011' mtime='09:52' ampm='PM' filesize='13,259' filename='ASN1toXSDRunner.jar' />
<externalLibrarySystem>
</product>
Run Code Online (Sandbox Code Playgroud)

我将如何确定,如果一个节点只是字符串或attribs和基于我可以得到的值或者Stringattrib values分别.

xml xslt xpath

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

XPath查询:从标记中获取属性href

我想使用XPath hrefa-tag 获取属性,但它在同一个文件中有两次出现.我怎么相处?我需要检查如果有一个href值为$ street/object 的属性,我有这个代码,它不起作用:

$product_photo     = $xpath->query("//a[contains(@href,'{$object_street}fotos/')][1]");
        $product_360       = $xpath->query("//a[contains(@href,'{$object_street}360-fotos/')][1]");
        $product_blueprint = $xpath->query("//a[contains(@href,'{$object_street}plattegrond/')][1]");
        $product_video     = $xpath->query("//a[contains(@href,'{$object_street}video/')][1]");
Run Code Online (Sandbox Code Playgroud)

它根本不会返回任何东西.谁能帮助我?

html xpath domdocument

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

在xpath中连接多个节点值

我有一个看起来像这样的XML

<element1>
    <element2>
        <element3>    
            <element4>Hello</element4>
            <element5>World</element5>
        </element3>
        <element3>    
            <element4>Hello2</element4>
            <element5>World2</element5>
        </element3>
        <element3>    
            <element4>Hello3</element4>
            <element5>World3</element5>
        </element3>
    </element2>
</element1>
Run Code Online (Sandbox Code Playgroud)

我试图使用Xpath得到这样的结果:

Hello.World
Hello2.World2
Hello3.World3
Run Code Online (Sandbox Code Playgroud)

我在下面使用了concat函数但是没有得到正确的结果.

Concat功能:

concat(/element1/element2/element3/element4/text(),".", /element1/element2/element3/element5/text())
Run Code Online (Sandbox Code Playgroud)

结果我得到了:

Hello.World
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到正确的结果?我正在使用XPath与Camel Spring DSL.

编辑:

XQuery,XSLT和SPel中的解决方案也很受欢迎.

编辑

我尝试了字符串连接,但它不起作用:

字符串连接函数:

string-join((/element1/element2/element3/element4/text(), /element1/element2/element3/element5/text()),".")
Run Code Online (Sandbox Code Playgroud)

结果我得到了:

Hello.Hello2.Hello3.World.World2.World3
Run Code Online (Sandbox Code Playgroud)

xml xslt xpath xquery spring-el

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

在ElementTree中使用XPath

我的XML文件如下所示:

<?xml version="1.0"?>
<ItemSearchResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2008-08-19">
  <Items>
    <Item>
      <ItemAttributes>
        <ListPrice>
          <Amount>2260</Amount>
        </ListPrice>
      </ItemAttributes>
      <Offers>
        <Offer>
          <OfferListing>
            <Price>
              <Amount>1853</Amount>
            </Price>
          </OfferListing>
        </Offer>
      </Offers>
    </Item>
  </Items>
</ItemSearchResponse>
Run Code Online (Sandbox Code Playgroud)

我想做的就是提取ListPrice.

这是我正在使用的代码:

>> from elementtree import ElementTree as ET
>> fp = open("output.xml","r")
>> element = ET.parse(fp).getroot()
>> e = element.findall('ItemSearchResponse/Items/Item/ItemAttributes/ListPrice/Amount')
>> for i in e:
>>    print i.text
>>
>> e
>>
Run Code Online (Sandbox Code Playgroud)

绝对没有输出.我也试过了

>> e = element.findall('Items/Item/ItemAttributes/ListPrice/Amount')
Run Code Online (Sandbox Code Playgroud)

没有不同.

我究竟做错了什么?

python xml xpath elementtree

35
推荐指数
4
解决办法
5万
查看次数

如何从SQL Server中的XML元素获取特定属性

我在表的列中有类似下面的XML:

<?xml version="1.0" encoding="utf-8"?>
<container>
  <param name="paramA" value="valueA" />
  <param name="paramB" value="valueB" />
  ...
</container>
Run Code Online (Sandbox Code Playgroud)

我试图通过TSQL从XML中获取valueB部分

到目前为止,我正在获得正确的节点,但现在我无法弄清楚如何获取属性.

select xmlCol.query('/container/param[@name="paramB"]') from LogTable
Run Code Online (Sandbox Code Playgroud)

我想我可以添加/ @值到最后,但是SQL告诉我属性必须是节点的一部分.我可以找到许多用于选择子节点属性的示例,但兄弟属性中没有任何属性(如果这是正确的术语).

任何帮助,将不胜感激.

xml sql-server xpath xquery

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