0

タグ内に含まれる特定の DOI を記事の XML ファイルから検索するコードを作成しようとしています。正しい DOI が見つかったら、その DOI に関連付けられた記事の<title>とテキストにアクセスするようにします。<abstract>

私の XML ファイルは次の形式です。

<root>
 <article>
  <number>
   0 
  </number>
  <DOI>
   10.1016/B978-0-12-381015-1.00004-6 
  </DOI>
  <title>
   The patagonian toothfish biology, ecology and fishery. 
  </title>
  <abstract>
   lots of abstract text
  </abstract>
 </article>
 <article>
  ...All the article tags as shown above...
 </article>
</root>

スクリプトで DOI 10.1016/B978-0-12-381015-1.00004-6 (たとえば) の記事を検索し、対応するタグ内の<title>およびタグにアクセスできるようにしたいと考えています。<abstract><article>

これまでのところ、この質問からコードを適応させようとしました:

from xml.dom import minidom

datasource = open('/Users/philgw/Dropbox/PW-Honours-Project/Code/processed.xml')
xmldoc = minidom.parse(datasource)   

#looking for: 10.1016/B978-0-12-381015-1.00004-6

matchingNodes = [node for node in xmldoc.getElementsByTagName("DOI") if node.firstChild.nodeValue == '10.1016/B978-0-12-381015-1.00004-6']

for i in range(len(matchingNodes)):
    DOI = str(matchingNodes[i])
    print DOI

しかし、私は自分が何をしているのか完全にはわかりません!

助けてくれてありがとう。

4

2 に答える 2

1

ミニドムは必須ですか?lxml と XPath を使用して解析するのは非常に簡単です。

from lxml import etree
datasource = open('/Users/philgw/Dropbox/PW-Honours-Project/Code/processed.xml').read()
tree = etree.fromstring(datasource)
path = tree.xpath("//article[DOI="10.1016/B978-0-12-381015-1.00004-6") 

これにより、DOI が指定された記事が取得されます。

また、タグ間に空白があるようです。これが Stackoverflow のフォーマットのためかどうかはわかりません。これがおそらく、minidom と一致させることができない理由です。

于 2011-02-10T16:01:54.420 に答える
0

私見-Pythonドキュメントで調べてください!これを試してください(テストされていません):

from xml.dom import minidom

xmldoc = minidom.parse(datasource)   

def get_xmltext(parent, subnode_name):
    node = parent.getElementsByTagName(subnode_name)[0]
    return "".join([ch.toxml() for ch in node.childNodes])

matchingNodes = [node for node in xmldoc.getElementsByTagName("article")
           if get_xmltext(node, "DOI") == '10.1016/B978-0-12-381015-1.00004-6']

for node in matchingNodes:
    print "title:", get_xmltext(node, "title")
    print "abstract:", get_xmltext(node, "abstract")
于 2011-02-10T16:44:41.263 に答える