
| ■ | PyXML |
ただし、PyXMLはSAX・DOM準拠のXMLパーサー(構文解析)ライブラリで、 XSLT変換のモジュールは今のところ姿が見えないので、 XMLのパージングに専ら使うことになりましょう。 SAX(Simple API for XML)は、XML文書を先頭から最後まで順に読みながら、 XMLタグに出会うたびに何かの処理をしていくスタイルの XMLアプリケーションに適したシンプルなXML解析APIです。 DOM(Document Object Model)は文書構造をメモリ上にツリーとして分解するAPIで、 XML文書に含まれるデータの一部を修正して保存するタイプのアプリケーションに適したAPIです。 PyXMLはSAXのバージョン1、2をサポートしており、 CやJavaなどでSAX準拠のAPIを使ったことがあれば簡単です。 また、SAXはシンプルなので、XML処理は初めてという開発者にとっても、 付属のサンプルを見ながらイメージをつかんでいけると思います。
XML-SIGのトピックガイドでは、PythonのXML関連ソフトウェアは 「PyXMLとその他の仲間たち」という位置づけになっていますが、 Python+XMLの仲間達はこの他にも多数のオープンソース・プロジェクトが SourceForgeに上がっており、日夜活発に開発が進められています。
●Windowsへのインストール
次の環境で試しました。
| プラットフォーム | PyXML | Python |
|---|---|---|
| MS-Windows XP Home Edition | 0.8.0 | 2.1 |
| MS-Windows XP Home Edition | 0.8.1 | 2.2 |
| MS-Windows XP Home Edition | 0.8.3 | 2.3 |
●プログラミング
# 2002/08/07
import sys # for sys.argv
from xml.sax import saxexts
class DocHandler:
def characters(self, data, start, length):
print "**[" + data[start:start+length] + "]"
def ignorableWhitespace(self, data, start, length):
print "oo[" + data[start:start+length] + "]"
def startDocument(self):
print "START DOCUMENT"
def endDocument(self):
print "END DOCUMENT"
def startElement(self, name, attrs):
print "START <" + name + "> ",
for s in attrs:
print "[" + s + "]={" + attrs[s] + "} "
print ""
def endElement(self, name):
print "END <" + name + ">"
def setDocumentLocator(self, data):
print "DL: " + str(data)
def processingInstruction(self, data, data2):
print "PI: " + str(data) + "," + str(data2)
def __getattr__(self, name, *rest):
print "@@ETC: " + name
class ErrorHandler:
def error(self, exception):
print "ERROR: " + str(exception)
def fatalError(self, exception):
print "FATAL ERROR: " + str(exception)
def warning(self, exception):
print "WARNING: " + str(exception)
pf=saxexts.ParserFactory()
p=pf.make_parser("xml.sax.drivers.drv_xmlproc")
p.setDocumentHandler(DocHandler())
#p.setDTDHandler(SAXtracer("dtd_handler"))
p.setErrorHandler(ErrorHandler())
#p.setEntityResolver(SAXtracer("ent_handler"))
p.parse(sys.argv[1])
|
セクションのサブメニューに戻る
(first uploaded 2002/08/11 last updated 2003/08/14)