2012-02-14 4 views
3

저는 py-dom-xpath과 데비안 4.1.1-21에서 python 2.7.2를 사용하여 curreny입니다.
하나의 XML 요소 대신 모든 것이 잘 작동합니다.xpath에서 대시를 사용하면 py-dom-xpath에서 작동하지 않습니다.

//AAA/BBB/CCC-DDD과 같은 xpath에 대한 XML 문서를 검사 할 때마다 경로를 찾을 수 없습니다. 대시가 - 인 유일한 노드입니다. 나는 이미 돌진에서 벗어나려고했지만, 그건 효과가 없었다.

나는 또한 //*[name()='CCC-DDD']starts-withcontains 진술을 시도했다. 이 요소는 XML에 있으며 철자법도 정확합니다.

나는 online xpath validation site을 시도했으며 대시가 있어도 완벽하게 작동합니다.

도움을 주시면 감사하겠습니다.

+0

lxml.etree를 사용 하시겠습니까 ?? 그것은 xml을 파싱하는 효율적이고 pythonic 한 방법입니다. ''@unutbu에서 샘플 XML로 – shenshei

+0

는' ' XYZ' '' ', 데비안 위지에 파이썬 2.7.3, 및 PY-DOM-XPath는-0.1,'xpath.findnode (' // AAA/BBB/CCC-DDD ', doc)'나를 위해 일합니다. XML 입력 문서를 제공 할 수 있습니까? –

+0

질문에서 Apert : 데비안 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

은 또한 인코딩 문제의 일종이 될 수 산출한다.

여기에 문제가 발생할 가능성이 매우 높습니다. 파일의 모든 대시 주변 상황을 보여 grepping하여 대시 실제로 U + 002D ('-')임을 확인 : 스크립트에서

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

또한합니다. Different characters that look like dashes(etc.)은 서로 일치하지 않습니다.

관련 문제