使用 XML 等
<a>
<b>
</b>
</a>
我需要添加类似的兄弟姐妹
<a>
<b>
</b>
<b'>
</b'>
</a>
ElementTree 是否具有添加兄弟节点的功能?如果没有,我想我需要一个函数来获取父节点并添加子节点,我该怎么做?
使用 XML 等
<a>
<b>
</b>
</a>
我需要添加类似的兄弟姐妹
<a>
<b>
</b>
<b'>
</b'>
</a>
ElementTree 是否具有添加兄弟节点的功能?如果没有,我想我需要一个函数来获取父节点并添加子节点,我该怎么做?
Python 标准库中包含的默认 ElementTree 实现没有获取父节点的方法。
但是,如果您可以使用lxml 的etree 实现,那么有一种getparent()
方法。
手头有什么:
import re
def sibling(bal,text):
print 'bal ==' + bal + '\n' # + '\n\n' + s
def aux(match):
# match.group(4) is '/' or None
return ("%s%s<%s'/>%s" % match.group(1,2,3,6) if match.group(4)
else "%s%s<%s'>%s'>%s" % match.group(1,2,3,5,6))
return re.sub('('
'(^\s*)<(' + bal + ')(?: [^/>]+)?' # 2 and 3
'(?:(/)|>(?:.*?)((?:(?:\n|\r\n?)\\2)?</\\3))' # 4 and 5
'>(\n|\r\n?|\Z)' # 6
')',
aux, text, flags = re.MULTILINE|re.DOTALL)
ch = """\
<a>
<b>
</b>
</a>
"""
dh = """\
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dd="http://example.com/ns/1.0" xml:lang="en-US">
<entry>
<dd:country_code>USA</dd:country_code>
<content type="html">Hello World!</content>
<OTF>
<FECS state="disabled" version="2.2.0.0">
<BackEndCompatibility major="2.2" state="disabled">
<BackEnd state="disabled" version="2.2.0.0"/>
<Forth type="ziwi">d,;%er*dkj@jkber-uyr</Forth>
</BackEndCompatibility>
</FECS>
</OTF>
</entry>
"""
print sibling('a',ch)
print '------------------------------------------------------'
print sibling('b',ch)
print '------------------------------------------------------'
for x in ('entry','dd:country_code','content','OTF','FECS',
'BackEndCompatibility','BackEnd','Forth'):
print sibling(x,dh)
print '------------------------------------------------------'
结果:
bal ==a
<a>
<b>
</b>
</a>
<a'>
</a'>
------------------------------------------------------
bal ==b
<a>
<b>
</b>
<b'>
</b'>
</a>
------------------------------------------------------
bal ==entry
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dd="http://example.com/ns/1.0" xml:lang="en-US">
<entry>
<dd:country_code>USA</dd:country_code>
<content type="html">Hello World!</content>
<OTF>
<FECS state="disabled" version="2.2.0.0">
<BackEndCompatibility major="2.2" state="disabled">
<BackEnd state="disabled" version="2.2.0.0"/>
<Forth type="ziwi">d,;%er*dkj@jkber-uyr</Forth>
</BackEndCompatibility>
</FECS>
</OTF>
</entry>
<entry'>
</entry'>
------------------------------------------------------
bal ==dd:country_code
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dd="http://example.com/ns/1.0" xml:lang="en-US">
<entry>
<dd:country_code>USA</dd:country_code>
<dd:country_code'></dd:country_code'>
<content type="html">Hello World!</content>
<OTF>
<FECS state="disabled" version="2.2.0.0">
<BackEndCompatibility major="2.2" state="disabled">
<BackEnd state="disabled" version="2.2.0.0"/>
<Forth type="ziwi">d,;%er*dkj@jkber-uyr</Forth>
</BackEndCompatibility>
</FECS>
</OTF>
</entry>
------------------------------------------------------
bal ==content
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dd="http://example.com/ns/1.0" xml:lang="en-US">
<entry>
<dd:country_code>USA</dd:country_code>
<content type="html">Hello World!</content>
<content'></content'>
<OTF>
<FECS state="disabled" version="2.2.0.0">
<BackEndCompatibility major="2.2" state="disabled">
<BackEnd state="disabled" version="2.2.0.0"/>
<Forth type="ziwi">d,;%er*dkj@jkber-uyr</Forth>
</BackEndCompatibility>
</FECS>
</OTF>
</entry>
------------------------------------------------------
bal ==OTF
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dd="http://example.com/ns/1.0" xml:lang="en-US">
<entry>
<dd:country_code>USA</dd:country_code>
<content type="html">Hello World!</content>
<OTF>
<FECS state="disabled" version="2.2.0.0">
<BackEndCompatibility major="2.2" state="disabled">
<BackEnd state="disabled" version="2.2.0.0"/>
<Forth type="ziwi">d,;%er*dkj@jkber-uyr</Forth>
</BackEndCompatibility>
</FECS>
</OTF>
<OTF'>
</OTF'>
</entry>
------------------------------------------------------
bal ==FECS
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dd="http://example.com/ns/1.0" xml:lang="en-US">
<entry>
<dd:country_code>USA</dd:country_code>
<content type="html">Hello World!</content>
<OTF>
<FECS state="disabled" version="2.2.0.0">
<BackEndCompatibility major="2.2" state="disabled">
<BackEnd state="disabled" version="2.2.0.0"/>
<Forth type="ziwi">d,;%er*dkj@jkber-uyr</Forth>
</BackEndCompatibility>
</FECS>
<FECS'>
</FECS'>
</OTF>
</entry>
------------------------------------------------------
bal ==BackEndCompatibility
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dd="http://example.com/ns/1.0" xml:lang="en-US">
<entry>
<dd:country_code>USA</dd:country_code>
<content type="html">Hello World!</content>
<OTF>
<FECS state="disabled" version="2.2.0.0">
<BackEndCompatibility major="2.2" state="disabled">
<BackEnd state="disabled" version="2.2.0.0"/>
<Forth type="ziwi">d,;%er*dkj@jkber-uyr</Forth>
</BackEndCompatibility>
<BackEndCompatibility'>
</BackEndCompatibility'>
</FECS>
</OTF>
</entry>
------------------------------------------------------
bal ==BackEnd
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dd="http://example.com/ns/1.0" xml:lang="en-US">
<entry>
<dd:country_code>USA</dd:country_code>
<content type="html">Hello World!</content>
<OTF>
<FECS state="disabled" version="2.2.0.0">
<BackEndCompatibility major="2.2" state="disabled">
<BackEnd state="disabled" version="2.2.0.0"/>
<BackEnd'/>
<Forth type="ziwi">d,;%er*dkj@jkber-uyr</Forth>
</BackEndCompatibility>
</FECS>
</OTF>
</entry>
------------------------------------------------------
bal ==Forth
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dd="http://example.com/ns/1.0" xml:lang="en-US">
<entry>
<dd:country_code>USA</dd:country_code>
<content type="html">Hello World!</content>
<OTF>
<FECS state="disabled" version="2.2.0.0">
<BackEndCompatibility major="2.2" state="disabled">
<BackEnd state="disabled" version="2.2.0.0"/>
<Forth type="ziwi">d,;%er*dkj@jkber-uyr</Forth>
<Forth'></Forth'>
</BackEndCompatibility>
</FECS>
</OTF>
</entry>
------------------------------------------------------
它适用于'a'
和
"""\
<a>
<b>
</b>
</a>
"""
但不是
"""\
<a>
<b>
</b>
</a>"""