xml2filecontent

raspi 08.05.08 17:40

filecontent2xml:n tuottama XML takaisin raakadataksi

 Tekstiversio  Arvo: 0 (2 ääntä)  Äänestä: +  -
# raspi 2008
# käyttää lxml:ää  ( http://codespeak.net/lxml/ )
# tulostaa:
#
# filename: test.txt
# data:
# test

import sys, string, os
from lxml import etree
from lxml import objectify

xml = """
<content filename="
test.txt">
  <bytes offset="
0">
    <bit number="
0" isset="False" />
    <bit number="
1" isset="True" />
    <bit number="
2" isset="True" />
    <bit number="
3" isset="True" />
    <bit number="
4" isset="False" />
    <bit number="
5" isset="True" />
    <bit number="
6" isset="False" />
    <bit number="
7" isset="False" />
  </bytes>
  <bytes offset="
1">
    <bit number="
0" isset="False" />
    <bit number="
1" isset="True" />
    <bit number="
2" isset="True" />
    <bit number="
3" isset="False" />
    <bit number="
4" isset="False" />
    <bit number="
5" isset="True" />
    <bit number="
6" isset="False" />
    <bit number="
7" isset="True" />
  </bytes>
  <bytes offset="
2">
    <bit number="
0" isset="False" />
    <bit number="
1" isset="True" />
    <bit number="
2" isset="True" />
    <bit number="
3" isset="True" />
    <bit number="
4" isset="False" />
    <bit number="
5" isset="False" />
    <bit number="
6" isset="True" />
    <bit number="
7" isset="True" />
  </bytes>
  <bytes offset="
3">
    <bit number="
0" isset="False" />
    <bit number="
1" isset="True" />
    <bit number="
2" isset="True" />
    <bit number="
3" isset="True" />
    <bit number="
4" isset="False" />
    <bit number="
5" isset="True" />
    <bit number="
6" isset="False" />
    <bit number="
7" isset="False" />
  </bytes>
</content>
"
""

root = objectify.fromstring(xml)

filename = root.get("filename")
data = []

for byte in root.iterchildren():
  bits = []
  for bit in byte.iterchildren():
    isset = bit.get("isset")
    if isset == "True":
      bits.append("1")
    else:
      bits.append("0")

  byte = "".join(bits)
  data.append(chr(int(byte, 2)))

print "filename: %s" % filename
print "data:"
print "".join(data)

Ztane 19:26 8.5.08 
Hmm... olet siis laittanut tuonne bitin numerot ja bytejen numerot jotka ignoretat... joku skeemailee msb-arkkitehtuurilla tuollasen fileen ja laittaa siihen bitit 7:stä 0:aan... ja jopa räjähti ;)