2010-12-27 8 views
1

私のXMLに問題があります。私は何をしているのは、私は何をすべきか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> 

から抽出されたリストから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

私は、forループでそれを試してみましたが、それは私のためにワークアウトしませんでした。私はAE_ar,AE_ar,AE_ar, AM_hy,AM_hy,AM_hyのようになっています。 Pythonでこれを行うには、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

ありがとう、これは正確に私が探していた重量でした、私のループのロジックが間違っていた – Rakesh

関連する問題