Как я могу включить ссылку на файл XSLT с Python ElementTree? - PullRequest
0 голосов
/ 10 мая 2018

Я очень стараюсь включить свой заголовок XSLT в свой XML с ElementTree, и я не могу найти никакой информации о том, как это сделать.

Вот мой код Python:

tree = ET.parse('myfile.xml') #get all tags from this XML document

root = tree.getroot()  #get all elements from each tag

root[0][0].text = "ole"

root[0][1].text = "ole"

tree.write('test_file.xml', encoding='utf-8', method="xml") #write XML file

Единственная проблема - включить этот заголовок:

<\? xml-stylesheet type="text/xsl" href="myfile.xsl" \?>

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Я только что нашел ответ !!!

Вам нужно использовать lxml, а это новый код:

    from lxml import etree as ET 

    parser = ET.XMLParser(strip_cdata=False) #strip = false to prevent cdata to be removed/ stripped 
    tree = ET.parse('myfile.xml', parser) 
    root = tree.getroot()  #get all elements from each tag

    tag1 = root.find('TAG1')
    tag1.find('TAG2').text = 'text change here'

    tree.write('test_file.xml', encoding='utf-8', method="xml")

Ваш XML-шаблон (myfile.xml) похож на это:

    <?xml-stylesheet type="text/xsl" href="your_file.xsl" ?>
    <FirstTAG>              
            <TAG1>      
                 <TAG2>your text</TAG2>
            </TAG1>
    </FirstTAG>

А новый будет такой:

    <?xml-stylesheet type="text/xsl" href="your_file.xsl" ?>
    <FirstTAG>              
            <TAG1>      
                 <TAG2>text change here</TAG2>
            </TAG1>
    </FirstTAG>
0 голосов
/ 11 мая 2018

К сожалению xml.etree.ElementTree не поддерживает XSLT (например, вы можете прочитать о write(), что method равно xml , текст или html ).

К счастью, вы можете легко сделать это, если положитесь на lxml, который добавляет поддержку к XSLT

...