编程语言
首页 > 编程语言> > 如何使用jython / python ElementTree在Google Refine中解析xml

如何使用jython / python ElementTree在Google Refine中解析xml

作者:互联网

我试图使用Jython和ElementTree解析Google Refine中的一些xml,但是我一直在努力寻找任何文档来帮助我完成此工作(可能不是Python编码员也无济于事)

这是我要解析的XML的一部分.我正在尝试返回所有dc:indentifier的连接字符串:

<oai_dc:dc xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
  <dc:creator>J. Koenig</dc:creator>
  <dc:date>2010-01-13T15:47:38Z</dc:date>
  <dc:date>2010-01-13T15:47:38Z</dc:date>
  <dc:date>2010-01-13T15:47:38Z</dc:date>
  <dc:identifier>CCTL0059</dc:identifier>
  <dc:identifier>CCTL0059</dc:identifier>
  <dc:identifier>http://open.jorum.ac.uk:80/xmlui/handle/123456789/335</dc:identifier>
  <dc:format>application/pdf</dc:format>
</oai_dc:dc>

这是到目前为止我得到的代码.这是一个返回任何内容的测试,现在我得到的只是’Error:null’

from elementtree import ElementTree as ET
element = ET.parse(value)

namespace = "{http://www.openarchives.org/OAI/2.0/oai_dc/}"
e = element.findall('{0}identifier'.format(namespace))
for i in e:
   count += 1
return count

解决方法:

您可以像这样使用GREL表达式,尝试一下:

forEach(value.parseHtml().select("dc|identifier"),v,v.htmlText()).join(",")

对于找到的每个标识符,请给我htmlText并将它们全部加逗号.
parseHtml()使用Jsoup.org库,实际上只是解析标签和结构.它还了解有关使用ns | identifier格式解析名称空间的信息,并且在这种情况下,这是获取所需内容的一种好方法.

标签:jython,python,xml-parsing,google-refine
来源: https://codeday.me/bug/20191101/1987199.html