Хотел бы вывести xml файл как в теле из python, используя lxml - PullRequest
0 голосов
/ 03 апреля 2020

Хотелось бы вывести следующее во главе xml

Я могу найти много при разборе и проверке, но не так много при создании / выводе

Я могу найти некоторую документацию на QName, но как вывести

`

 <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
 <gdml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     

 xsi:noNamespaceSchemaLocation="http://service-spi.web.cern.ch/service-spi/app  /releases/GDML/schema/gdml.xsd">`

Ответы [ 2 ]

1 голос
/ 04 апреля 2020

Используйте QName для создания атрибута (noNamespaceSchemaLocation), который связан с пространством имен http://www.w3.org/2001/XMLSchema-instance.

from lxml.etree import QName, Element, tostring

qname = QName("http://www.w3.org/2001/XMLSchema-instance", "noNamespaceSchemaLocation")
attr_dict = {qname: "http://service-spi.web.cern.ch/service-spi/app /releases/GDML/schema/gdml.xsd"}

gdml = Element("gdml", attr_dict)

print(tostring(gdml, encoding="UTF-8", standalone=False).decode())

Вывод:

<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<gdml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://service-spi.web.cern.ch/service-spi/app /releases/GDML/schema/gdml.xsd"/>

Объявление пространства имен (xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance") создается автоматически.

0 голосов
/ 05 апреля 2020

Спасибо - я уже сделал это по-другому

  NS = 'http://www.w3.org/2001/XMLSchema-instance'
  location_attribute = '{%s}noNameSpaceSchemaLocation' % NS
  gdml = ET.Element('gdml',attrib={location_attribute:   'http://service-spi.web.cern.ch/service-spi/app/releases/GDML/schema/gdml.xsd'})
  print(gdml.tag)
...