2010-12-27 2 views
1

XML에 문제가 있습니다. 내가 뭘해야 할 일은 내가이 일을 목록의 값 연결 (XML, Python)

<?xml version="1.0" encoding="UTF-8"?> 
<locales> 
<api-url>url</api-url> 
<locale> 
    <market>AE</market> 
    <languages> 
     <language>ar</language> 
    </languages> 
</locale> 
<locale> 
    <market>AM</market> 
    <languages> 
     <language>hy</language> 
     <language>ru</language> 
    </languages> 
</locale> 
는 XML에서 추출 된 목록에서 CONCATENATE 값입니다.

inputXml = lxml.etree.parse('xml') 

market = inputXml.xpath('//locale/market/text()') 

Lang = inputXml.xpath('//locale[i]/languages//language/text()') 

내가이 같은 시장과 랭의 값을 연결해야한다 -> AE_ar는 AM_hy, AM_ru

i는 for 루프와 그것을 시도하지만 나를 위해 운동을하지 않았다. 나는 AE_ar,AE_ar,AE_ar, AM_hy,AM_hy,AM_hy과 같아지고있다. 파이썬에서이 작업을 수행하는 XSLT 또는 무언가를 사용하여 같은 다른 방법이

+1

산출 어떻게처럼 루프 모양? –

답변

5
import lxml.etree as ET 
import io 

content='''\ 
<?xml version="1.0" encoding="UTF-8"?> 
<locales> 
<api-url>url</api-url> 
<locale> 
    <market>AE</market> 
    <languages> 
     <language>ar</language> 
    </languages> 
</locale> 
<locale> 
    <market>AM</market> 
    <languages> 
     <language>hy</language> 
     <language>ru</language> 
    </languages> 
</locale> 
</locales> 
''' 
inputXml=ET.parse(io.BytesIO(content)) 

for locale in inputXml.xpath('//locale'): 
    market = locale.xpath('market/text()')[0] 
    for lang in locale.xpath('languages/language/text()'): 
     print('{m}_{l}'.format(m=market,l=lang)) 

AE_ar 
AM_hy 
AM_ru 
+0

고마워, 내가 정확히 찾고 있었어 wt, 내가 찾고 있었어, 내 루프에 대한 논리가 잘못됐다 – Rakesh