xpath表达式不工作[关闭](xpath expression not working [clos

2019-09-23 11:25发布

    <DOC NUMBER=1>
<DOCFULL> -->
<br><div class="c0">
<p class="c1"><span class="c2">Dokument 1 von 3</span></p>
</div>
<br><div class="c0">
<br><p class="c1"><span class="c2">Associated Press Financial Wire</span></p>
</div>
<br><div class="c3">
<p class="c1"><span class="c2">April 25, 2012 Wednesday 9:18 PM GMT </span></p>
</div>
<br><div class="c4">
<p class="c5"><span class="c6">Apple CEO Tim Cook emerges from Steve Jobs' shadow</span></p>
</div>
<br><div class="c4">
<p class="c5"><span class="c7">BYLINE: </span><span class="c2">By PETER SVENSSON, AP Technology Writer</span></p>
</div>
<br><div class="c4">
<p class="c5"><span class="c7">SECTION: </span><span class="c2">BUSINESS NEWS</span></p>
</div>
<br><div class="c4">
<p class="c5"><span class="c7">LENGTH: </span><span class="c2">794 words</span></p>
</div>
<br><div class="c4">
<p class="c5"><span class="c7">DATELINE: </span><span class="c2">NEW YORK </span></p>
</div>
<br><div class="c4">
<p class="c8"><span class="c2"> MAIN TEXT 1</span></p>
</div>
<br><div class="c4">
<p class="c5"><span class="c7">LOAD-DATE: </span><span class="c2">April 26, 2012</span></p>
</div>
<br><div class="c4">
<p class="c5"><span class="c7">LANGUAGE: </span><span class="c2">ENGLISH</span></p>
</div>
<br><div class="c4">
<p class="c5"><span class="c7">PUBLICATION-TYPE: </span><span class="c2">Newswire</span></p>
</div>
<br><div class="c0">
<br><p class="c1"><span class="c2">Copyright 2012 Associated Press<br>All Rights Reserved</span></p>
</div>
<!-- Hide XML section from browser
</DOCFULL>
</DOC> -->

我是新来的XPath,我想结合使用它与R(邓肯郎的XML包)查询,我从LexisNexis公司收到一个html文件。 文档包含多个新闻文章并且每个制品是通过有界<DOC NUMBER=1> <DOCFULL>标记。 我希望提取一对夫妇的信息对每个文件,例如提取部分的信息,我得到这个远:

doc <- htmlParse("hmtldoc.HTML")
xpathSApply(doc,"//span[text()='SECTION: ']/..", xmlValue)

这给了我:

[1] "SECTION: BUSINESS NEWS" "SECTION: BUSINESS NEWS" "SECTION: BUSINESS NEWS"

这是输出我可以工作。 主要的问题是,并不是每一篇文章都有一节。 我需要知道的是文章提供这些信息,哪些没有,最好通过返回NA或一个空表元素,所以我可以推断出这些信息我自己。

与此相关的问题:我试着拿出我第一次选择的无论是DOC或DOCFULL节点,并从那里上的解决方案,例如:

xpathSApply(doc,"//DOCFULL/*/span[text()='SECTION: ']/..", xmlValue)

我想这应该返回上述相同的文字,但它没有。 不管怎么说,我还是很新的语言和欣赏任何帮助。

Answer 1:

因为有之间后代元素不止一个“等级” DOCFULLspan S,你要么需要

含糊

//DOCFULL//*/span[text()='SECTION: ']/..

还是要具体说明水平(DIV和P)

//DOCFULL/*/*/span[text()='SECTION: ']/..


Answer 2:

在文档给出,你可以只使用这样的:

//*[span='SECTION: ']

你并不需要指定找到的文本跨度节点“部分:”,然后选择它的父,你只需要选择一个与该文本的“跨度”儿童的任何节点。

如果你需要的是一个的后代DOCFULL元素,那么使用

//DOCFULL//*[span='SECTION: ']


文章来源: xpath expression not working [closed]
标签: html r xpath