标签: xpath

查找具有属性的元素 - SimpleXML xpath

我正在尝试从我的xml中选择一个具有特定属性"id"的元素.这是我的xml:

<listitems>
  <item id="1">
    <name>item 1</name>
  </item>
  <item id="2">
    <name>item 2</name>
  </item>
  <item id="3">
    <name>item 3</name>
  </item>
</listitems>
Run Code Online (Sandbox Code Playgroud)

这个php文件:

<?php
$simplexml = simplexml_file_load('test.xml');
$item = $simplexml->xpath('item[@id="1"]');
?>
Run Code Online (Sandbox Code Playgroud)

然后,如果我尝试,例如:

<?php $item->addchild('description','textdescription'); ?>
Run Code Online (Sandbox Code Playgroud)

我在最后一行得到这个错误:"致命错误:在非对象上调用成员函数addchild()"

有什么不对的吗?

php xml xpath simplexml

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

'utf8'编解码器无法解码位置0中的字节0xd0:无效的连续字节

我在html文档中有以下文本:

<a href="#">?'?? ????????? ??????????</a>
Run Code Online (Sandbox Code Playgroud)

我正在使用以下表达式来提取文本:

row.xpath("string(./td[@class='col2 td-tags']/h3/a/text())")
Run Code Online (Sandbox Code Playgroud)

此表达式适用于简单的英语,但对于上面的字符串,它会抛出此错误:

'utf8' codec can't decode byte 0xd0 in position 0: invalid continuation byte
Run Code Online (Sandbox Code Playgroud)

python xpath elementtree

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

如何检查第一个前一个兄弟是xslt 2.0中上下文节点的w:tbl?

这是XML文档.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
                    xmlns:v="urn:schemas-microsoft-com:vml">
        <w:body>

          <w:p>para1</w:p>
          <w:tbl>table data 1</w:tbl>
          <w:p>para2</w:p>   <!-- have to check whether this node is w:tbl or not  with respect to the context node below-->
          <w:tbl>table data 2</w:tbl> <!-- Assume this is context node -->

       </w:body>
      </w:document>
Run Code Online (Sandbox Code Playgroud)

所以,我想要查询的第一前同辈[ <w:p>para2</w:p>]所述的上下文节点[ <w:tbl>table data 2</w:tbl>]<w:tbl>或没有.

请指导我摆脱这个问题......

xml xslt xpath xslt-2.0 xpath-2.0

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

Xpath - 选择第一个/第二个元素

我有下一个xpath:

//span[text()="Bingo"]/parent::div/parent::div/parent::td/preceding-sibling::td[1]
Run Code Online (Sandbox Code Playgroud)

它返回两个元素.

我如何选择其中一个(第一个或第二个)?

我尝试:

//span[text()="Bingo"]/parent::div/parent::div/parent::td/preceding-sibling::td[1][1]
Run Code Online (Sandbox Code Playgroud)

但它仍然给了我两个元素.

xpath

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

xpath循环到未知数量的节点

我有一个看起来像这样的xpath:

$path = '//*[@id="page-content"]/table/tbody/tr[3]/td['.$i.']/div/a';
Run Code Online (Sandbox Code Playgroud)

其中,$i从1到X.我会正常使用:

for($i=1; $i<X;$i++){
  $path = '//*[@id="page-content"]/table/tbody/tr[3]/td['.$i.']/div/a';
  $nodelist = $xpath->query($path);
  $result = $nodelist->item(0)->nodeValue;
};
Run Code Online (Sandbox Code Playgroud)

但是,在这种情况下,我不知道X有多少.有没有办法在不知道X的情况下循环这个?

php xpath html-parsing

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

如何通过xpath解析lxml中的子元素

page = urlopen(req)
doc = parse(page).getroot()
table = doc.xpath('/html/body/div/div/div/table')
table
<Element table ...>
doc.xpath('/html/body/div/div/div/table/tr')
<Element tr ...>...
table.xpath('/tr')
[]
Run Code Online (Sandbox Code Playgroud)

为什么不table.xpath('/tr')产生相同的元素列表doc.xpath('/html/body/div/div/div/table/tr')呢?

python xpath lxml

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

如何在Oracle XMLTable中使用带有变量的XPath?

如何在Oracle XMLTable()中使用带有类似'/ abc/[contract = $ count]/initialValue'的变量的XPath?

例如:

XMLTable('root/level1', PASSING xmlContent 
COLUMNS initial_value varchar2(100) PATH '/abc/[contract = $count]/initialValue' 
)
Run Code Online (Sandbox Code Playgroud)

如何替换/评估$ count运行时?

oracle xpath plsql

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

如何在XPATH中乘以值?

假设我有一堆

<item price='n' sold='m'>
...
</item>
Run Code Online (Sandbox Code Playgroud)

我想在每件商品上做价格*.我在尝试

'//item/(@price * @sold)' 
Run Code Online (Sandbox Code Playgroud)

来自python中的lxml内部,但我不断收到错误'Invalid Expression'.xmllint命令也是如此.但是相同的查询在Oxygen xml编辑器中有效.

我该如何工作?

xml xpath

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

XPath - 反转选择

我正在写一个xpath,我编写了xpath,它匹配文档树中的一些节点

但是我想要匹配所有其他元素,所以我想在整个文档的上下文中反转选择

所以我们假设我们有以下xpath

//*[@id='menu']//*
Run Code Online (Sandbox Code Playgroud)

和文件

<body>
<div>
  <h1>title</h1>
</div>
<div>
<div id="menu">
  <UL>
    <LI>home</LI>
    <LI>about</LI>
  </UL>
</div>
<div id="sidebar">
  <ul>
    <li>one</li>
    <li>two</li>
  </ul>
</div>
<div>
</body>
Run Code Online (Sandbox Code Playgroud)

所以上层节点是匹配的,但我想要实现的是标记所有小写节点.

谢谢你的帮助

xslt xpath

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

获得单个子元素的最佳方法

我们有C#代码来处理我们创建的各种XML文档.通常我们需要获得一个已知的子元素(它可能是唯一的孩子或可能有其他兄弟姐妹).我有一个给父母的函数,子名称将返回子元素:

public static XmlElement GetChildElement(XmlElement parentElement, string childName) 
{
    return parentElement.GetElementsByTagName(childName).Cast<XmlElement>().FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,但有一天我想知道是否可以使用XPath或LINQ to XML更清晰,更容易.我发现的大多数XPath示例似乎都想知道文档的整个结构,我想要一个只知道父和子的泛型函数.Linq to XML似乎更有前途,但我没有找到一个匹配我正在寻找的例子.

c# xml xpath linq-to-xml

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

标签 统计

xpath ×10

xml ×4

php ×2

python ×2

xslt ×2

c# ×1

elementtree ×1

html-parsing ×1

linq-to-xml ×1

lxml ×1

oracle ×1

plsql ×1

simplexml ×1

xpath-2.0 ×1

xslt-2.0 ×1