2012-02-14 11 views
3

私はpy-dom-xpathを使ってcurrenyを使い、Debian 4.1.1-21でpython 2.7.2を使用しています。
1つのXML要素の代わりに、すべてうまく機能します。xpathでダッシュを使用するとpy-dom-xpathで機能しません

XML文書で//AAA/BBB/CCC-DDDのようなxp​​athをチェックしようとすると、パスが見つかりません。ダッシュが-の唯一のノードです。私はすでにダッシュを脱出しようとしましたが、うまくいかなかったのです。

また、私は//*[name()='CCC-DDD']starts-withとというステートメントを試しました。要素はXMLの中にあり、スペルも正しい。

私はonline xpath validation siteを試しましたが、そこにはダッシュでも完全に機能します。

何か助けていただければ幸いです。

+0

lxml.etreeを試しますか?これは、xmlを解析する効率的かつ非凡な方法です。 @unutbuからのサンプルXMLを – shenshei

+0

は、 ' '' '(」 XYZ ''' '、Debianのウィージー上のPython 2.7.3、およびPY-DOM-のXPath-0.1、' xpath.findnodeを// AAA/BBB/CCC-DDD '、doc) 'は私のために働く。 XML入力文書を提供できますか? –

+0

あなたの質問からのApert:Debian 4? 4年間でセキュリティの修正を受けていないのですか?真剣に更新を検討するべきです。 – dirkk

答えて

1

lxmlをオプションで使用していますか?そこのXPath作業罰金でダッシュ:

import lxml.etree as ET 

content = '''<root><AAA><BBB><CCC-DDD>xyz</CCC-DDD></BBB></AAA></root>''' 
doc = ET.fromstring(content) 
print(doc.xpath('//AAA/BBB/CCC-DDD')) 

はまた、エンコードの問題のいくつかの種類の可能性があり

[<Element CCC-DDD at 0xb746f504>] 
1

が得られます。

ここで問題が発生する可能性が非常に高いです。スクリプト内

grep -o '...-...' input-file.xml 

も:ダッシュは、ファイル内のすべてのダッシュ周りの状況を示すために、grepをすることによって、実際にU + 002D(「-」)であることを確認します。 Different characters that look like dashes(etc.)は一致しません。

関連する問題