def save(self):
assert self.m_filename
if self.g_latex_radio.get_active():
format = "latex"
else:
format = "html"
doc = et.Element("sheet", fileformat_version=self.current_fileformat_version,
creator="GNU Solfege",
app_version=buildinfo.VERSION_STRING)
doc.append(et.Comment(""))
et.SubElement(doc, "title").text = self.g_title.get_text()
et.SubElement(doc, "output_format").text = format
for sect in self.m_sections:
s = et.Element("section")
et.SubElement(s, "title").text = sect['title']
et.SubElement(s, "filename").text = sect['filename']
# only the harmonic and melodic intervals have this variable:
if 'intervals' in sect:
et.SubElement(s, 'intervals').text = "%s" % sect['intervals']
# We do save 'count' because this variable say how many questions
# we want to generate, and len(questions) will just say how many
# are generated now.
et.SubElement(s, "count").text = "%i" % sect['count']
et.SubElement(s, "line_len").text = "%i" % sect['line_len']
et.SubElement(s, "qtype").text = "%i" % sect['qtype']
for qdict in sect['questions']:
q = et.SubElement(s, "question")
t = et.SubElement(q, "teachers")
et.SubElement(t, "name").text = qdict['answer']['name']
et.SubElement(t, "music").text = qdict['answer']['music']
t = et.SubElement(q, "students")
et.SubElement(t, "name").text = qdict['question']['name']
et.SubElement(t, "music").text = qdict['question']['music']
doc.append(s)
tree = et.ElementTree(doc)
f = open(self.m_filename, 'w')
print >> f, '<?xml version="1.0" encoding="utf-8"?>'
tree.write(f, encoding="utf-8")
f.close()
self.m_changed = False
python类Comment()的实例源码
def setUp(self):
if not xml4h.LXMLAdapter.is_available():
self.skipTest("lxml library is not installed")
from lxml import etree
# Build a DOM using minidom for testing
self.root_elem = etree.Element('{urn:test}DocRoot', nsmap={
None: 'urn:test'})
doc = etree.ElementTree(self.root_elem)
self.elem1 = etree.Element(u'??1',
nsmap={'ns1': 'urn:ns1'})
self.elem1.attrib['a'] = '1'
self.elem1.attrib['{urn:ns1}b'] = '2'
self.elem2 = etree.Element('Element2')
self.elem3 = etree.Element('{urn:ns1}Element3',
nsmap={None: 'urn:ns1'})
self.elem4 = etree.Element('{urn:ns1}Element4',
nsmap={None: 'urn:ns1'})
self.elem2_second = etree.Element('Element2')
self.elem3_second = etree.Element('{urn:ns2}Element3',
nsmap={'ns2': 'urn:ns2'})
self.text_node = xml4h.impls.lxml_etree.LXMLText(
'Some text', self.elem1)
self.elem1.text = self.text_node.text
self.cdata_node = xml4h.impls.lxml_etree.LXMLText(
'Some cdata', self.elem2, is_cdata=True)
self.elem2.text = self.cdata_node.text
self.comment_node = etree.Comment('A comment')
self.instruction_node = etree.ProcessingInstruction(
'pi-target', 'pi-data')
self.root_elem.append(self.elem1)
self.root_elem.append(self.elem2)
self.root_elem.append(self.elem3)
self.root_elem.append(self.elem4)
self.elem3.append(self.elem2_second)
self.elem2_second.append(self.comment_node)
self.elem4.append(self.elem3_second)
self.elem3_second.append(self.instruction_node)
self.doc = doc
self.xml4h_doc = xml4h.LXMLAdapter.wrap_document(doc)
self.xml4h_root = self.xml4h_doc.root
self.xml4h_text = xml4h.LXMLAdapter.wrap_node(self.text_node, self.doc)
def setUp(self):
# Use c-based or pure python ElementTree impl based on test class
if self.__class__ == TestcElementTreeNodes:
if not self.adapter_class.is_available():
self.skipTest(
"C-based ElementTree library is not installed"
" or is too outdated to be supported by xml4h")
import xml.etree.cElementTree as ET
else:
if not self.adapter_class.is_available():
self.skipTest(
"Pure Python ElementTree library is not installed"
" or is not too outdated to be supported by xml4h")
import xml.etree.ElementTree as ET
# Build a DOM using minidom for testing
self.root_elem = ET.Element('{urn:test}DocRoot')
doc = ET.ElementTree(self.root_elem)
self.elem1 = ET.Element(u'??1')
self.elem1.attrib['xmlns:ns1'] = 'urn:ns1'
self.elem1.attrib['a'] = '1'
self.elem1.attrib['{urn:ns1}b'] = '2'
self.elem2 = ET.Element('Element2')
self.elem3 = ET.Element('{urn:ns1}Element3')
self.elem3.attrib['xmlns'] = 'urn:ns1'
self.elem4 = ET.Element('{urn:ns1}Element4')
self.elem3.attrib['xmlns'] = 'urn:ns1'
self.elem2_second = ET.Element('Element2')
self.elem3_second = ET.Element('{urn:ns2}Element3')
self.elem3_second.attrib['xmlns:ns2'] = 'urn:ns2'
self.text_node = xml4h.impls.xml_etree_elementtree.ElementTreeText(
'Some text', self.elem1)
self.elem1.text = self.text_node.text
self.cdata_node = xml4h.impls.xml_etree_elementtree.ElementTreeText(
'Some cdata', self.elem2, is_cdata=True)
self.elem2.text = self.cdata_node.text
self.comment_node = ET.Comment('A comment')
self.instruction_node = ET.ProcessingInstruction(
'pi-target', 'pi-data')
self.root_elem.append(self.elem1)
self.root_elem.append(self.elem2)
self.root_elem.append(self.elem3)
self.root_elem.append(self.elem4)
self.elem3.append(self.elem2_second)
self.elem2_second.append(self.comment_node)
self.elem4.append(self.elem3_second)
self.elem3_second.append(self.instruction_node)
self.doc = doc
self.xml4h_doc = self.adapter_class.wrap_document(doc)
self.xml4h_root = self.xml4h_doc.root
self.xml4h_text = self.adapter_class.wrap_node(
self.text_node, self.doc)