标签: xpath

如何引用序列中的"下一个"(尚不存在)XML节点?

所以要扩大......

我有一些XML

<root>
    <list>
        <item value="9"/>
        <item value="3"/>
        <item value="1"/>
        <item value="8"/>
        <item value="4"/>
    </list>
</root>
Run Code Online (Sandbox Code Playgroud)

我有一个XPath"/ root/list/item [4]"我相信它将检索第5个'item'元素(其value属性为4)

这表明XPath"/ root/list/item [5]"将引用(当前不存在的)第6项.

我想要的是一个XPath表达式,它将引用'Next'(尚未存在)'item'元素,无论当前有多少项...

我假设这将传递一个表达式(它将计算当前元素的数量)而不是硬编码数字.

我知道我会怎么做,但根本找不到我应该怎么做......令人沮丧.

更新:澄清......我想返回"最后一个项目节点之后的项目节点".这些属性只是为了区分现有节点).我很欣赏这将返回一个空节点集.

更新:嗯,我有我的答案所以我想这是公平的我解释为什么我想要这个:)

基本上,某些.Net代码使用xPath作为写地址而不是读地址.

我将一个不存在的位置的xPath传递给EnsureNodeExists例程.(注意:我无法改变此EnsureNodeExists例程)代码将迭代xPath的每个元素,如果它不存在则创建它,然后将其设置为下一次迭代的父元素.

因此,我可以使用"/ root/list/item [position()= last()]/following-sibling :: item [1]"3次调用此代码,这将导致创建3个项目节点.

xml xpath xquery

0
推荐指数
1
解决办法
410
查看次数

php xpath - 属性上的字符串函数

使用下面的xpath查询在属性上应用字符串函数(例如"normalize-space")的正确语法是什么?

查询:"./ @ media"

我在其他地方看过这个例子,但如果我用php的xpath库试一试,它什么都不返回......

php xpath

0
推荐指数
1
解决办法
2191
查看次数

关于节点位置和属性值的XPath查询

有没有办法构建一个XPath查询,在某个位置找到一个节点并具有某个属性值?

请考虑以下示例xml:

<Item Type="Book">
<!--1st Param node in a Book item is always the autors last name-->
<Param Value="Updike" />
<!--2nd Param node in a Book item is always the autors first name-->
<Param Value="John" />
<!--3rd Param node in a Book item is always the book title-->
<Param Value="Toward the End of Time" /></Item>
Run Code Online (Sandbox Code Playgroud)

现在我可以构建一个查找以下内容的查询:

找到所有项目的节点类型,其中第2个"书" 帕拉姆节点都有一个 "约翰"的.所以我想找到作者名字的所有书籍都是"约翰".

请注意,我使用的是.NET XPathDocument.

xpath xpathdocument

0
推荐指数
1
解决办法
569
查看次数

在XPath中选择相同的属性并返回结果而不重复

我有一个像这样的XML文档:

<wii>
  <game>
    <type genre="arcade" />
    <type genre="sport" />
  </game>
  <game>
    <type genre="platform" />
    <type genre="arcade" />
  </game>
</wii>
Run Code Online (Sandbox Code Playgroud)

如何仅使用XPath列出所有类型而不重复?

谢谢.

xml xpath

0
推荐指数
1
解决办法
991
查看次数

如何培养团队成员成为Xml专家

伙计们,

我必须与一个新团队合作并为每个团队设计所需的技能,我想为他们中的一个制定一个压缩的培训计划,成为团队中的Xml专家,作为其中的一部分,我让他阅读来自W3Schools的XPath,XSLT,但他还需要知道什么?还是有更好的来源?

xml xslt xpath

0
推荐指数
1
解决办法
574
查看次数

在XSLT 1.0中,当它是具有相同名称的多个元素之一时,如何访问特定XML元素的属性?

我责怪谷歌搜索设备让我问这个问题.

以下是设备返回的XML片段:

<GSP VER="3.2">
<TM>0.073846</TM>
<Q>test</Q>
<PARAM name="entqr" value="0" original_value="0"/>
<PARAM name="access" value="p" original_value="p"/>
<PARAM name="output" value="xml_no_dtd" original_value="xml_no_dtd"/>
<PARAM name="sort" value="date:D:L:d1" original_value="date%3AD%3AL%3Ad1"/>
<PARAM name="ud" value="1" original_value="1"/>
<PARAM name="ie" value="UTF-8" original_value="UTF-8"/>
<PARAM name="btnG" value="Search" original_value="Search"/>
<PARAM name="client" value="default_frontend" original_value="default_frontend"/>
<PARAM name="oe" value="UTF-8" original_value="UTF-8"/>
<PARAM name="q" value="I like stuff" original_value="I like stuff"/>
...
Run Code Online (Sandbox Code Playgroud)

我需要为这些PARAM元素中的特定一个执行xsl:value-of,有条件地根据其名称.例如,我需要使用@ name ="client"输出PARAM元素的@value.

谢谢!

xml xslt xpath

0
推荐指数
1
解决办法
2708
查看次数

为什么我对Web上的XML文件的XPath请求不起作用?

有一个汇率为http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml的XML文件:

<gesmes:Envelope>
  <gesmes:subject>Reference rates</gesmes:subject>
  <gesmes:Sender>
    <gesmes:name>European Central Bank</gesmes:name>
  </gesmes:Sender>
  <Cube>
    <Cube time="2009-11-26">
      <Cube currency="USD" rate="1.5071"/>
       ...
Run Code Online (Sandbox Code Playgroud)

我做下一个XPath请求:

var doc = new XmlDocument();
doc.Load(url);
var node = doc.SelectSingleNode("//Cube[@currency=\"USD\""]);
var value = node.Attributes["rate"].Value;
Run Code Online (Sandbox Code Playgroud)

但它又回来了null!我的错误在哪里?

如果我这样做,一切正常:

var node = dic.SelectSingleNode("//*[@currency=\"USD\"]");
var name = node.Name; // "Cube"
Run Code Online (Sandbox Code Playgroud)

.net c# xml xpath web-services

0
推荐指数
1
解决办法
989
查看次数

带有xpath的PHP SimpleXML

我有一个小的XML文件:

<wddxPacket version='1.0'>
  <header/>
  <data>
    <struct type='coldfusion.runtime.ArgumentCollection'>
      <var name='HEADLINE'>
        <string>Richard Barret's Articles on Leadership and High Performance Organisations</string>
      </var>
    </struct>
  </data>
</wddxPacket>
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用PHP SimpleXML和xpath来提取var名称HEADLINE元素中的字符串元素之间的值.此代码有效:

// Location of the XML file on the file system
$file = 'http://10.10.200.37/skins/importscript/41802.xml';
$xml = simplexml_load_file($file);

// CREATE THE ARRAYS FOR EACH XML ELEMENT NEEDED

$title = $xml->xpath('//var[@name="HEADLINE"]');

echo "<p>";
print_r($title);
echo "</p>";
Run Code Online (Sandbox Code Playgroud)

问题是它不仅返回值,还返回所有数组信息.如:

Array ( 
  [0] => SimpleXMLElement Object ( 
    [@attributes] => Array ( 
      [name] => HEADLINE 
    ) 
    [string] => Richard Barret's Articles on Leadership …

php xpath simplexml

0
推荐指数
1
解决办法
1031
查看次数

XSLT和XPath:如何以最有效的方式更改XML文件?

我是XSLT和XPath的新手,所以请原谅我这个简单的问题.

我有以下XML文件:

<?xml version="1.0"?>
    <Configuration serviceName="Just Service" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration">
      <Page name="Books">
        <Instances count="5" />
        <ConfigurationSettings>
          <Setting name="index" value="true" />
          <Setting name="number" value="value1" />
          <Setting name="bookstorage" value="value2"/>
        </ConfigurationSettings>
      </Page>
      <Page name="Magazines">
        <Instances count="7" />
        <ConfigurationSettings>
          <Setting name="index" value="false" />
          <Setting name="number" value="value1" />
          <Setting name="magazinestorage" value="value3"/>
        </ConfigurationSettings>
      </Page>
    </Configuration>
Run Code Online (Sandbox Code Playgroud)

我只想更改以下值 ...

value1 - 数字(两个地方); value2 - 用于书籍存储 ; value3 - 杂志存储 ;

......并保持所有其他内容不变.

为此,我想使用msxsl.exe(Microsoft命令行实用程序).能否请您给我一个XSLT样式表示例的提示?如何以最有效的方式使用XSLT处理初始XML文件?

谢谢,Rac

xml xslt xpath

0
推荐指数
1
解决办法
1237
查看次数

检索特定的先前兄弟节点属性

是否有一种XPath方法使用XPath查询直接恢复XML节点的前一个兄弟节点的一个特定属性?

在下面的示例中,我想检索在标有该元素的元素之前的alt每个img节点的属性值.divid=marker

<content>
  <img alt="1" src="file.gif" />
  <img alt="2" src="file.gif" />
  <img alt="3" src="file.gif" />
  <img alt="4" src="file.gif" />
  <div id='marker'></div>
</content>
Run Code Online (Sandbox Code Playgroud)

对于此示例,我想检索值1 2 3 4.
我使用以下XPath查询

//div[@id='marker']/preceding-sibling::img
Run Code Online (Sandbox Code Playgroud)

为了检索我想要的节点列表

<img alt="1" src="file.gif"/>
<img alt="2" src="file.gif"/>
<img alt="3" src="file.gif"/>
<img alt="4" src="file.gif"/>
Run Code Online (Sandbox Code Playgroud)

由于它是一个节点列表,我可以在节点上迭代以检索我正在寻找的属性值,但是有一种XPath方式吗?我原以为能够写下这样的东西:

//div[@id='marker']/preceding-sibling::img@alt
or //div[@id='marker']/preceding-sibling@alt::img
Run Code Online (Sandbox Code Playgroud)

但是,一旦你使用了XPath Axe类似的兄弟姐妹,我甚至不知道是否可能.

xml xpath

0
推荐指数
1
解决办法
6470
查看次数

标签 统计

xpath ×10

xml ×7

xslt ×3

php ×2

.net ×1

c# ×1

simplexml ×1

web-services ×1

xpathdocument ×1

xquery ×1