タグ

pythonとXMLに関するGlnのブックマーク (8)

  • PythonでXMLを扱う(8) - 二十代は模索のときブログ

    Python Memo二十代は模索のときブログ - PythonでXMLを扱う(7)では今回で簡単にXSLTの動きを見たので、次回からはこれをPythonに組み込んでいく方法を勉強する。と前回書いたが、やはりもう少しXSLTの動きを見てみようと思う。今回は以下のindustry.xmlをXSLTを使ってHTMLに変換する。スタイルシートであるtrans-industry.xslを変化させることによるHTMLの変化を見ていくと、XSLTの動きが分かるかと思う。industry.xml Aichi 100,000 COROLLA Kanagawa 70,000 SKYLINE Hiroshima 50,000 RX-7 trans-industy.xsl The Japanese Industry of 一番簡単な例。このindustry.xmlをtrans-industry.xslを使っ

  • PythonでXMLを扱う(7) - 二十代は模索のときブログ

    Python Memo今回からはXSLT(Extensible Stylesheet Language Transformations)を使ってみることにする。まずいつもどおりWikipediaから(日語版は情報少ないんで、英語版をリンクします)。Wikipedia : XSL TransformationsExtensible Stylesheet Language Transformations (XSLT) is a Turing complete XML-based language used for the transformation of XML documents.XSLTとは読んで字の如しなのだが、あるXMLファイルをHTMLやXHTMLや別の形式のXMLに変換する場合に利用する技術。その変換の方法をスタイルシートと呼ばれるXSLファイルに記述する(ちょっとややこしいが

  • PythonでXMLを扱う(6) - 二十代は模索のときブログ

    Python MemoSAXにてXMLの階層構造を扱う際、あるタグの内部に入ったことをフラグにて判断する方法があると思う。例えば以下のようにフラグを用いることで、hogeタグの内部に入ったのか入っていないのかを判断できる。 class SimpleHandler(ContentHandler): def __init__(self): self.inHoge = False def startElement(self, name, attrs): if.name == "hoge": self.inHoge = True def endElement(self, name): if.name == "hoge": self.inHoge = False ただこれ、もうちょっとスマートに出来ないものかと、ContentHandlerを動的に変更することができないかどうか試してみた。それが出来

  • PythonでXMLを扱う(5) - 二十代は模索のときブログ

    Python Memo前回まではDOMを使っていたが、今回からはSAX(Simple API for XML)を使ってXMLを扱ってみる。DOMと違ってメモリ上にXMLファイルの情報を全て読み込むようなことはなく、順次読み込みを行い、読み込んだ内容に対して逐次イベントを発生させる仕組みのAPIである。Wikipedia : Simple API for XMLXML文書をツリー構造として扱うDOMと異なり、一連のイベントとして表現するイベント駆動型のAPIである。したがって、アプリケーションが積極的にAPIにアクセスするDOMに対し、SAXではアプリケーションがイベントが来るのを待ち受ける受動的な動作が大部分を占める。あるXMLを扱うアプリケーションを作成する際、DOMを使うかSAXを使うかは、両者のメリットデメリットをしっかり認識した上で扱うべきであるが、一般的に大きなサイズのXMLファ

  • PythonでXMLを扱う(4) - 二十代は模索のときブログ

    PythonでXMLを扱う(4) Python Memo 今回は、DOMインターフェースを使ってXML文書を作成してみる。DOMインターフェースなぞ使わなくても、プログラム言語の文字列操作でXML文書を作ることは可能ではあるが、DOMを用いることで正しいXML文書が簡単に作れるということが保証される。 以下がDOMを使ってXMLを作る簡単な例である。 from xml.dom import minidom, Node doc = minidom.Document() doc.appendChild(doc.createComment("This is a XML document")) country = doc.createElement('country') doc.appendChild(country) name = doc.createElement('name') name.a

    Gln
    Gln 2010/08/07
  • PythonでXMLを扱う(3) - 二十代は模索のときブログ

    Python Memo前回はDOMを使ってXMLのツリー構造をただ見ただけだったが、今回は実際にタグの名称などを指定して、XMLから簡単な文章を作ってみる。sample.xml Japan Tokyo Korea Seoul United States Washington D.C タグにid="1"のような記述があるが、これを属性(Attribute)という。これもタグと一緒で任意の名称で任意の個数、つまり自由に設定できる。このXMLファイルを以下のプログラムで読み込む。 from xml.dom import minidom, Node def scanCountry(node): print "CountryID%s" % (node.getAttribute("id")), for child in node.childNodes: if child.nodeType == Nod

    Gln
    Gln 2010/08/07
  • PythonでXMLを扱う(2) - 二十代は模索のときブログ

    Python Memoでは前回書いた通りPythonでDOMを使い、ツリー上のデータ構造でXMLファイルの内容をメモリ上に読みこんでみる。今回読み込んでみるのは以下のXMLファイル。sample.xml Japan 120,000,000 Tokyo 12,645,525 Shinjuku で囲まれた部分はプロローグと呼ばれるらしく、このXMLに関する色々な情報を記述する欄らしいが、詳しくはまだ分からない。ここではXMLのバージョンと文字エンコードの指定をしている。二行目はコメント欄*1。ではこのXMLを、以下のプログラムを使って読みこんでみる。 from xml.dom import minidom, Node def scanNode(node, level = 0): msg = node.__class__.__name__ if node.nodeType == Node.ELE

    Gln
    Gln 2010/08/07
  • PythonでXMLを扱う(1) - 二十代は模索のときブログ

    PythonでXMLを扱う(1) Python Memo PythonでXML(Extensible Markup Language)を扱う方法を勉強してみようと思うが、実はXML初心者なので、まずXML全般について学んでみなきゃあかん。とりあえず手元にあるFoundations of Python Network Programmingの第八章、「XML and XML-RPC」を参考にしてみることにする。 XMLをWikipediaを見てみると予想通りかなりの記述があったので、こちらを併せて参考にする。 Wikipedia : Extensible Markup Language Extensible Markup Language (エクステンシブルマークアップランゲージ、XML、拡張可能なマーク付け言語、JIS X 4159:2002) は、データを記述するマークアップ言語を定義す

    Gln
    Gln 2010/08/07
  • 1