パーサの修正方法
今回のテストでは J2ME でビルドするため、およびサイズを縮小するために、パーサのソースコードを修正した。以下に修正方法の概要を示す。
- SAX1 API
-
- org.xml.sax パッケージから以下のクラスを残してそれ以外は削除(MinML1 では修正済)。
AttributeList, DTDHandler, DocumentHandler, EntityResolver,
ErrorHandler, InputSource, Locator, Parser, SAXException,
SAXParseException
但し Min では HandlerBase を残しておく。
- org.xml.sax.helpers パッケージは全部削除(MinML1 では修正済)。場合によっては AttributeListImpl が必要かもしれないが、今回テストしたパーサでは不要だった。
- J2ME には Locale がないので Parser#setLocale() を削除。
アプリケーション側では ParserFactory を使わずに Parser 実装を直接 new する。
- SAX2 API
-
- org.xml.sax パッケージから以下のクラスを残してそれ以外は削除(MinML2 では修正済)。
Attributes, ContentHandler, DTDHandler, EntityResolver,
ErrorHandler, InputSource, Locator, SAXException,
SAXNotRecognizedException, SAXNotSupportedException,
SAXParseException, XMLReader
- org.xml.sax.helpers パッケージは全部削除(MinML2 では修正済)。場合によっては AttributesImpl, NamespaceSupport が必要かもしれないが、今回テストしたパーサでは不要だった。
アプリケーション側では XMLReaderFactory を使わずに XMLReader 実装を直接 new する。
- XML Pull API
-
- org.xmlpull.v1 パッケージの XmlPullParserFactory, XmlSerializer を削除。
アプリケーション側では XmlPullParserFactory を使わずに XMLPullParser 実装を直接 new する。
- MXP1
-
- String#intern() をしないようにする。これは名前空間 URL の比較に使っているので、名前空間の使用で問題があるかもしれないが、今回のテストでは確認していない。
- kXML2
-
- org.kxml2.kdom パッケージを削除(パースには不要)。
- org.kxml2.wap パッケージを削除(パースには不要)。
- org.kxml2.io パッケージの KXmlSerializer を削除。
- MinML1
-
- uk.org.xml.sax.Parser#setLocale() を削除。
- NanoXML2/Lite
-
- J2ME には StringReader, CharArrayReader がないので String や char[] からパースするためのメソッドを nanoxml.XMLElement から削除。
- J2ME には double 型がないので、double 値を get/set するメソッドを nanoxml.XMLElement から削除。
- J2ME には Object#clone() がない。clone() を使っている nanoxml.XMLElement#getChildren() を削除。パースには影響はない。ノードへのアクセスには enumerateChildren() を使う。
- TinyXML
-
- Min
-