මම යෝජනා කරනවා declxml .
සම්පුර්ණ අනාවරණය කිරීම: මම මෙම පුස්තකාලය ලිව්වේ ElementTree සමඟ අත්යවශ්ය විග්රහ / අනුක්රමික කේත පේළි දුසිම් ගණනක් ලිවීමට අවශ්ය නොවී XML සහ පයිතන් දත්ත ව්යුහයන් අතර පරිවර්තනය වීමට ක්රමයක් සොයන බැවිනි.
Declxml සමඟ, ඔබ ඔබේ XML ලේඛනයේ ව්යුහය සහ XML සහ Python දත්ත ව්යුහයන් අතර සිතියම් ගත කරන්නේ කෙසේද යන්න ප්රකාශ කිරීමට අර්ථකථනය කිරීමට සකසනයන් භාවිතා කරයි . ප්රොසෙසර භාවිතා කරනුයේ අනුක්රමිකකරණය සහ විග්රහ කිරීම මෙන්ම මූලික මට්ටමේ වලංගු භාවයක් සඳහා ය.
පයිතන් දත්ත ව්යුහයන්ට විග්රහ කිරීම සරල ය:
import declxml as xml
xml_string = """
<foo>
<bar>
<type foobar="1"/>
<type foobar="2"/>
</bar>
</foo>
"""
processor = xml.dictionary('foo', [
xml.dictionary('bar', [
xml.array(xml.integer('type', attribute='foobar'))
])
])
xml.parse_from_string(processor, xml_string)
ප්රතිදානය නිපදවන:
{'bar': {'foobar': [1, 2]}}
XML වෙත දත්ත අනුක්රමික කිරීම සඳහා ඔබට එකම ප්රොසෙසරයක් භාවිතා කළ හැකිය
data = {'bar': {
'foobar': [7, 3, 21, 16, 11]
}}
xml.serialize_to_string(processor, data, indent=' ')
එය පහත ප්රතිදානය නිපදවයි
<?xml version="1.0" ?>
<foo>
<bar>
<type foobar="7"/>
<type foobar="3"/>
<type foobar="21"/>
<type foobar="16"/>
<type foobar="11"/>
</bar>
</foo>
ඔබට ශබ්ද කෝෂ වෙනුවට වස්තූන් සමඟ වැඩ කිරීමට අවශ්ය නම්, වස්තූන් වෙත සහ ඉන් පිටත දත්ත පරිවර්තනය කිරීම සඳහා ඔබට සකසනයන් අර්ථ දැක්විය හැකිය.
import declxml as xml
class Bar:
def __init__(self):
self.foobars = []
def __repr__(self):
return 'Bar(foobars={})'.format(self.foobars)
xml_string = """
<foo>
<bar>
<type foobar="1"/>
<type foobar="2"/>
</bar>
</foo>
"""
processor = xml.dictionary('foo', [
xml.user_object('bar', Bar, [
xml.array(xml.integer('type', attribute='foobar'), alias='foobars')
])
])
xml.parse_from_string(processor, xml_string)
එය පහත ප්රතිදානය නිපදවයි
{'bar': Bar(foobars=[1, 2])}