Jak wygenerować XML z tekstem w odpowiednim miejscu?

0

Witam,

potrzebuje wygenerować takiego xmla:

<?xml version="1.0" encoding="UTF-8"?>
<testsuite name="simple_tests" tests="1" errors="0" failures="0" skip="0">
  <testcase classname="simple_test_classname" name="simple_test_name" time="6.848">
    <metadata>
      <item name="test_case_description_docstring"/>
      <item name="test_case_source_file">/simpletest.py</item>   <!------ zaznaczona linia  -->

chodzi mi o zaznaczoną linię. Jak mogę umieścić simpletest.py za <item name="test_case_source_file"?

Na razie mam taki kodzik :

import xml.etree.ElementTree as ET

def GenerateXML(fileName) :
    root = ET.Element('testsuite', name='simple_tests', tests='1', errors='0', failures='0', skip='0')
    classname = ET.Element('testcase', classname='simple_test_classname', name='simple_test_name', time='6.848')  
    root.append(classname)
    abc = ET.Element('item' , name="test_case_description_docstring", value = 'test.py') 
    metadata = ET.Element('metadata')  
    metadata.append(ET.Element('item' , name="test_case_description_docstring"))
    metadata.append(ET.Element('item' , name="test_case_source_file"'>/test.py''</item'))

Proszę o pomoc.

0
Adam Majcher napisał(a):

chodzi mi o zaznaczoną linię. Jak mogę umieścić simpletest.py za <item name="test_case_source_file"?

Czyli jaki efekt konkretnie chcesz uzyskać?

Chodzi Ci o coś takiego?

<metadata>
  <item name="test_case_description_docstring"/>
  <item name="test_case_source_file"></item> /simpletest.py

Bo jeśli tak, to wystarczy że dodasz text node.

0
Riddle napisał(a):
Adam Majcher napisał(a):

chodzi mi o zaznaczoną linię. Jak mogę umieścić simpletest.py za <item name="test_case_source_file"?

Czyli jaki efekt konkretnie chcesz uzyskać?

Chodzi Ci o coś takiego?

<metadata>
  <item name="test_case_description_docstring"/>
  <item name="test_case_source_file"></item> /simpletest.py

Bo jeśli tak, to wystarczy że dodasz text node.

konkretnie tak ma wygłądać: <item name="test_case_source_file">/simpletest.py</item>
dodaje za pomocą metadata.append(ET.Element('item' , name="test_case_source_file"'>/test.py''</item')) ale to tak średnio działa
simpletest.py ma być w środku, pewnie da sie to jakoś ładnie zrobić, ale ja 1 raz zajmuje się generowaniem xmli :)

0
Adam Majcher napisał(a):

dodaje za pomocą metadata.append(ET.Element('item' , name="test_case_source_file"'>/test.py''</item')) ale to tak średnio działa
simpletest.py ma być w środku

No działa dokładnie tak jak powinno.

Próbujesz dodać strukturę XML dodając znaki specjalne do danych, a to nie jest dobry sposób żeby dodać text node do dokumentu. To byłoby bardzo złe działanie gdyby znaki specjalne takie jak > i < z danej były potraktowane jak struktura.

Spróbuj tak:

element = ET.Element('item', name="test_case_source_file")
element.text="/test.py"
metadata.append(element)
0
Riddle napisał(a):
Adam Majcher napisał(a):

dodaje za pomocą metadata.append(ET.Element('item' , name="test_case_source_file"'>/test.py''</item')) ale to tak średnio działa
simpletest.py ma być w środku

No działa dokładnie tak jak powinno.

Próbujesz dodać strukturę XML dodając znaki specjalne do danych, a to nie jest dobry sposób żeby dodać text node do dokumentu. To byłoby bardzo złe działanie gdyby znaki specjalne takie jak > i < z danej były potraktowane jak struktura.

Spróbuj tak:

element = ET.Element('item', name="test_case_source_file")
element.text="/test.py"
metadata.append(element)

dziekuję za pomoc, :) działa

1 użytkowników online, w tym zalogowanych: 0, gości: 1