filecontent2xml

raspi 07.05.08 18:32

Muuntaa tiedoston sisällön käteväksi XML:ksi

 Tekstiversio  Arvo: 1 (3 ääntä)  Äänestä: +  -
# raspi 2008
# idea @ http://thedailywtf.com/Articles/Oh,-XML.aspx
# Koska XML on niin erinäppärää ja kätevää!
#
# test.txt:n sisältö on "test"
#
# ohjelma tulostaa:
#
# <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>

import sys, os, string

def inttobits(i,n):
  return tuple((0,1)[i>>j & 1] for j in xrange(n-1,-1,-1))

filename = "test.txt"

fh = open(filename, 'r')
offset = 0

print "<content filename=\"%s\">" % filename

while 1:
  c = fh.read(1)
  if not c:
    break

  bits = inttobits(ord(c), 8)

  print "  <bytes offset=\"%d\">" % offset
  for i in range(8):

    if bits[i] == 1:
      isset = "True"
    else:
      isset = "False"

    print "    <bit number=\"%d\" isset=\"%s\" />" % (i, isset)
 
  print "  </bytes>"
  offset += 1

print "</content>"

fh.close()   

T.M. 19:52 7.5.08 
miten sen saa näkymään selaimella sen tekstin "testi" ku kattoo sitä XML tiedostoo?
Esko 10:09 9.5.08 
Koodisi räjäyttää alkuperäisen datan aika tarkalleen 400x enemmän tilaa vieväksi, onhan tämä varmaan ihan hyödyllinen mutta ihmettelenpä vain että kuka tällaisia systeemejä edes haluaa :)