0

kmlファイルのさまざまな部分を印刷するために、Pythonでxpathを使用してクエリを作成しようとしています。

問題は、クエリを作成すると、非常に奇妙な結果が得られることです。

これが私のコードです:

import libxml2

rss=libxml2.parseDoc(open('/home/julien/xpath/SUPPORT2.kml').read())
#print doc

node=rss.xpathEval('//Placemark')
print node

そして、ここに結果があります:

[<xmlNode (Placemark) object at 0xa3e2acc>, <xmlNode (Placemark) object at0xa3e2b6c>,     <xmlNode (Placemark) object at 0xa3e2d4c>, <xmlNode (Placemark)
object at 0xa3e2dac>, <xmlNode (Placemark) object at 0xa3e2dec>, <xmlNode 
Placemark) object at 0xa3e2dcc>, <xmlNode (Placemark) object at 0xa3e2d8c>, 
<xmlNode (Placemark) object at 0xa3e2e0c>, <xmlNode (Placemark) object at 
0xa3e2eac>, <xmlNode (Placemark) object at 0xa3e2fec>, <xmlNode (Placemark) 
object at 0xa3e2f0c>, <xmlNode (Placemark) object at 0xa3e2f2c>, <xmlNode 
(Placemark) object at 0xa3e2f4c>, <xmlNode (Placemark) object at 0xa3e2f6c>, 
<xmlNode (Placemark) object at 0xa3e2f8c>]

この結果を説明できるものは何ですか? クエリを機能させるには、コードに何を追加すればよいでしょうか?

4

1 に答える 1

0

得られる結果は、xmlNode オブジェクトのリストです。それらは明らかに正しい結果です。Python にノード リスト (の表現) を出力するように依頼しました。xmlNode オブジェクトの文字列表現は次のとおりです。

"<xmlNode (NodeName) object at MemoryAddress>"

ただし、シリアル化されたテキスト (" <Placemark> ...") として表示する必要があります。それを取得するには、リスト内の各 xmlNode でserialize()を呼び出します。

nodeList = rss.xpathEval('//Placemark')
for node in nodeList:
    print node.serialize('utf-8')

これは、XPath からの結果の内容について保証するのに役立ちます。ただし、これらのノードでさらに処理を行っている場合、シリアル化された文字列はおそらく必要なものではありません。

関連項目: Python の libxml2 を使用して XML ノードからテキストを読み取る

于 2013-02-27T22:09:42.517 に答える