Как мне получить список атрибутов XPATH, используя Python?
Спасибо за рассмотрение моего вопроса в этом форуме. Многие высоко отзывались об этом форуме Python, поэтому я ищу информацию о своих проблемах.
Я пытаюсь перечислить все пути Xpath входного файла с помощью разработчика кода Python после просмотра множества тем на этом форуме .
Вот ввод XML Сообщение.
<?xml version="1.0" encoding="UTF-8"?>
<data>
<country name="Liechtenstein">
<rank>1</rank>
<year>2008</year>
<gdppc>141100</gdppc>
<neighbor name="Austria" direction="E"/>
<neighbor name="Switzerland" direction="W"/>
</country>
<country name="Singapore">
<rank>4</rank>
<year>2011</year>
<gdppc>59900</gdppc>
<neighbor name="Malaysia" direction="N"/>
</country>
<country name="Panama">
<rank>68</rank>
<year>2012</year>
<gdppc>13600</gdppc>
<neighbor name="Costa Rica" direction="W"/>
<neighbor name="Colombia" direction="E"/>
</country>
</data>
Вот Python Код для использования вышеуказанного XML Сообщение:
import xml.etree.ElementTree as ET
from lxml import etree
infile = 'D:\Python_work\eclipse-workspace\My1stPythonP\CountryData.xml'
output ="D:\\Python_work\\eclipse-workspace\\My1stPythonP\\outfile.out"
tree = etree.parse(infile)
root = tree.getroot()
f = open(output,'w') #open write to file
count = tree.xpath("count(.//country)")
print (count)
f.write("%s\n" %(count))
xpathf = root.find('.//country')
print(xpathf.get("value"))
xpathf = root.find('.//data/country/year')
print(xpathf.get("value"))
print (tree.getroot() )
xmlstr = ET.tostring(root, method='xml')
root1 = ET.fromstring(xmlstr)
tree1 = etree.ElementTree(root)
for e in root.iter():
f.write("%s\n" %(tree1.getpath(e)))
f.close()
Мне нужна помощь этого форума, чтобы получить следующий вывод списка XPATH с использованием ввода сообщения XML и кода Python с l xml. Я пробовал с размещенным кодом Python. Он создает XPATH для XML элементов опубликованного входного сообщения XML, но не создает XPATH для атрибутов опубликованного входного сообщения XML. Примеры отсутствующих атрибутов XPATH показаны курсивом ниже. Вывод списка XPATH
Вывод списка XPATH
/data
/data/country
*/data/country/@name*
/data/country/rank
/data/country/year
/data/country/gdppc
/data/country/neighbor[1]
*/data/country/neighbor[1]/@name*
*/data/country/neighbor[1]/@direction*
/data/country/neighbor[2]
*/data/country/neighbor[2]/@name*
*/data/country/neighbor[2]/@direction*
/data/country[2]
*/data/country[2]/@name*
/data/country[2]/rank
/data/country[2]/year
/data/country[2]/gdppc
/data/country[2]/neighbor
*/data/country[2]/neighbor/@name*
*/data/country[2]/neighbor/@direction*
/data/country[3]
*/data/country[3]/@name*
/data/country[3]/rank
/data/country[3]/year
/data/country[3]/gdppc
/data/country[3]/neighbor[1]
*/data/country[3]/neighbor[1]/@name*
*/data/country[3]/neighbor[1]/@direction*
/data/country[3]/neighbor[2]
*/data/country[3]/neighbor[2]/@name*
*/data/country[3]/neighbor[2]/@direction*
- "tree1.getpath (e)" получение список XPATH, но атрибут XPATHS отсутствует в списке. Какое изменение в коде требуется для включения Xpaths атрибутов?
Я хочу извлечь значение на основе XPATH. Используя извлечение на основе XPATH, вот выходные данные, я хочу сообщить как
Country_name Rank Year Gdppc Neighbor Direction
============ ==== ==== ===== ======== ==========
Liechtenstein 1 2008 141100 Austria East
Switzerland West
Singapore 4 2011 59900 Malaysia North
Panama 68 2012 13600 Costa Rica West
Colombia East
Каким способом извлекается значение атрибута на основе XPATH?
Если во входном файле есть пространство имен spe c, приведенный выше код создает Список XPATH как
/ * / / [1] / / [2] / / [2] / [1 ] / / [2] / [2] / / [2] / [3] / / [2] / [4] / / [2] / [5] / / [2] / [6]
Есть ли способы получить читаемый XPATH с помощью Python, когда входной файл содержит пространство имен spe c?
Спасибо за ваше руководство.