将元素内容提取为列表,并使用XPath 1.0排除子元素
我目前正试图提取将元素内容提取为列表,并使用XPath 1.0排除子元素,xpath,xpath-1.0,Xpath,Xpath 1.0,我目前正试图提取listrings als元素列表,但我 要排除表单元素吗 到目前为止,由于中间有a元素,我没有返回两个项目 //*[@id=“quickPromoBucketContent”]///li[后代::形式]/text() HTML: 我方5%的股份来自英国昂格博特·冯·乌格林集团有限公司,我方1%的股份来自英国迈赫勒汽车公司(mehrere Auto Handy Halterung aus dem Angebot von UGREEN GROUP LIMITED) 埃尔本!您的
li
strings als元素列表,但我
要排除表单
元素吗
到目前为止,由于中间有a
元素,我没有返回两个项目
//*[@id=“quickPromoBucketContent”]///li[后代::形式]/text()
HTML:
- 我方5%的股份来自英国昂格博特·冯·乌格林集团有限公司,我方1%的股份来自英国迈赫勒汽车公司(mehrere Auto Handy Halterung aus dem Angebot von UGREEN GROUP LIMITED)
埃尔本!您的电话号码是49DFYWAQ。(Teilnahmebedingungen)
- 我方5%的股份将由我方自行承担。我方将与英国欧格林集团有限公司合作!
代码为5BWVW4YN和der Kasse ein。(Teilnahmebedingungen)
- 购买优惠券,购买亚马逊10%的产品。
-
从要查询的示例代码中猜测
- 下面的所有li元素和属性为
id=“quickPromoBucketContent”
- 有形体后代的
- 从中获取所有子节点/子节点的文本
//*[@id="quickPromoBucketContent"]//li[descendant::form]/descendant-or-self::*/text()
后代或自身:*和
后代::
有点冗长。您可以将其缩短为//*[@id=“quickPromoBucketContent”]///li[.//form]///text()
,OP还说“但我想排除form元素”,因此我认为您需要向text()
添加一个谓词。示例://*[@id=“quickPromoBucketContent”]//li[.//form]//text()[not(祖先::form)]
@DanielHaley谢谢。是的,查询可以缩短。但是,我对有关表单元素的评论的解释不同。OP在这方面不是100%清楚。谢谢,这是有效的@DanielHaley你能解释一下有什么区别吗?我忘了:我还想排除所有具有target=“AmazonHelp”
//*[@id=“quickPromoBucketContent”]///li[.//form]//text()[不是(祖先::form)和不是(祖先::a[@target,“AmazonHelp”])]的元素,即使
元素是li
元素的一部分,也有可能排除
后面的所有内容吗?您想将具有后代形式的li
排除在外,还是只包括具有后代形式的li
排除在外?请澄清。我只想包括那些有一个的。
//*[@id="quickPromoBucketContent"]//li[descendant::form]/descendant-or-self::*/text()