连接列表中的值(XML,Python)

Rak*_*esh 1 python xml concatenation

我的XML有问题.我要做的是连接从XML示例中提取的列表中的值

<?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>
Run Code Online (Sandbox Code Playgroud)

我做的是.

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

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

Lang =  inputXml.xpath('//locale[i]/languages//language/text()')
Run Code Online (Sandbox Code Playgroud)

我必须连接市场和郎这样的价值 - > AE_ar,AM_hy,AM_ru

我尝试了一个for循环,但它没有为我锻炼.我变得像AE_ar,AE_ar,AE_ar, AM_hy,AM_hy,AM_hy.还有另外一种方法,比如在Python中使用Xslt或其他东西来做这件事

unu*_*tbu 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))
Run Code Online (Sandbox Code Playgroud)

产量

AE_ar
AM_hy
AM_ru
Run Code Online (Sandbox Code Playgroud)