パッケージ org.opengion.fukurou.xml
クラス JspSaxParser
java.lang.Object
org.xml.sax.helpers.DefaultHandler
org.xml.sax.ext.DefaultHandler2
org.opengion.fukurou.xml.JspSaxParser
- すべての実装されたインタフェース:
ContentHandler
,DTDHandler
,EntityResolver
,ErrorHandler
,DeclHandler
,EntityResolver2
,LexicalHandler
JSP/XMLファイルを読み取って、OGNode/OGElement オブジェクトを取得する、パーサークラスです。
自分自身が、DefaultHandler2 を拡張していますので、パーサー本体になります。
javax.xml.parsers および、org.w3c.dom の簡易処理を行います。
read で、トップレベルの OGNode を読み込み、write で、ファイルに書き出します。
通常の W3C 系の オブジェクトを利用しないのは、属性の並び順を保障するためです。
ただし、属性のタブ、改行は失われます。
また、属性値に含まれるCR(復帰), LF(改行), TAB(タブ)は、半角スペースに置き換えられます。
これは、SAXParser 側での XML の仕様の関係で、属性は、正規化されるためです。
- 変更履歴:
- 5.1.8.0 (2010/07/01) 新規作成, 5.1.9.0 (2010/08/01) static メソッドを廃止。通常のオブジェクトクラスとして扱います。
- 導入されたバージョン:
- JDK6.0,
-
コンストラクタの概要
コンストラクタ -
メソッドの概要
修飾子とタイプメソッド説明void
addFilter
(JspParserFilter filter) copyDirectry 処理で、OGDocument をフィルター処理するオブジェクトを登録します。void
characters
(char[] cbuf, int off, int len) 要素内の文字データの通知を受け取ります。void
comment
(char[] cbuf, int off, int len) 文書内の任意の位置にある XML コメントを報告します。void
copyDirectry
(File fromFile, File toFile) ディレクトリの再帰処理でパース処理を行います。void
endCDATA()
CDATA セクションの終わりを報告します。void
endDTD()
DTD 宣言の終わりを報告します。void
endElement
(String uri, String localName, String qName) 要素の終了通知を受け取ります。void
エンティティーの終わりを報告します。void
ignorableWhitespace
(char[] cbuf, int off, int len) 要素コンテンツに含まれる無視できる空白文字の通知を受け取ります。static void
サンプルプログラムです。XMLファイルを読み込み、OGDocument を返します。void
CDATA セクションの開始を報告します。void
文書の開始通知を受け取ります。void
DTD 宣言がある場合、その開始を報告します。void
startElement
(String uri, String localName, String qName, Attributes attributes) 要素の開始通知を受け取ります。void
startEntity
(String name) 内部および外部の XML エンティティーの一部の開始を報告します。string2Node
(String str) XML形式で表現された、文字列(String) から、OGDocument を構築します。void
パーサー警告の通知を受け取ります。void
write
(File aFile, OGDocument node) OGDocument を所定のファイルに、XML形式で書き出します。クラスから継承されたメソッド org.xml.sax.ext.DefaultHandler2
attributeDecl, elementDecl, externalEntityDecl, getExternalSubset, internalEntityDecl, resolveEntity, resolveEntity
クラスから継承されたメソッド org.xml.sax.helpers.DefaultHandler
endDocument, endPrefixMapping, error, fatalError, notationDecl, processingInstruction, setDocumentLocator, skippedEntity, startPrefixMapping, unparsedEntityDecl
クラスから継承されたメソッド java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
インタフェースから継承されたメソッド org.xml.sax.ContentHandler
declaration
-
コンストラクタの詳細
-
JspSaxParser
public JspSaxParser()デフォルトコンストラクター- 変更履歴:
- 8.5.3.2 (2023/10/13) JDK21対応。警告: デフォルトのコンストラクタの使用で、コメントが指定されていません
-
-
メソッドの詳細
-
read
XMLファイルを読み込み、OGDocument を返します。 内部的には、SAXParserFactory から、SAXParser を構築し、Property に、 http://xml.org/sax/properties/lexical-handler を設定しています。 コメントノードを処理するためです。- パラメータ:
aFile
- XMLファイル- 戻り値:
- ファイルから読み取って構築したOGDocumentオブジェクト
- 変更履歴:
- 5.1.9.0 (2010/08/01) static からノーマルに変更
- このメソッドは、nullを返しません
-
string2Node
XML形式で表現された、文字列(String) から、OGDocument を構築します。 処理的には、#read( File ) と同じで、取り出す元が、文字列というだけです。 XMLファイルからの読み込みと異なり、通常は、Element を表現した文字列が作成されますが、 返されるのは、OGDocument オブジェクトです。- パラメータ:
str
- XML形式で表現された文字列- 戻り値:
- ファイルから読み取って構築した OGDocumentオブジェクト
- 変更履歴:
- 5.1.9.0 (2010/08/01) static からノーマルに変更
- このメソッドは、nullを返しません
-
write
OGDocument を所定のファイルに、XML形式で書き出します。- パラメータ:
aFile
- 書き出すファイルnode
- 書き出す OGDocument- 変更履歴:
- 6.3.8.0 (2015/09/11) FileUtil#getPrintWriter( File,String ) を使用。, 8.5.4.2 (2024/01/12) PMD 7.0.0 CloseResource 対応
-
copyDirectry
ディレクトリの再帰処理でパース処理を行います。- パラメータ:
fromFile
- 読み取りもとのファイル/フォルダtoFile
- 書き込み先のファイル/フォルダ- 変更履歴:
- 5.1.9.0 (2010/08/01) static からノーマルに変更
-
addFilter
copyDirectry 処理で、OGDocument をフィルター処理するオブジェクトを登録します。 内部リストへフィルターを追加します。 フィルター処理は、追加された順に行われます。 内部リストへの追加はできますが、削除はできません。- パラメータ:
filter
- フィルターオブジェクト- 変更履歴:
- 5.1.9.0 (2010/08/01) 新規追加
-
startDocument
文書の開始通知を受け取ります。 インタフェース ContentHandler 内の startDocument- 定義:
startDocument
インタフェース内ContentHandler
- オーバーライド:
startDocument
クラス内DefaultHandler
- 関連項目:
- 変更履歴:
- 6.4.3.1 (2016/02/12) PMD refactoring. HashMap → ConcurrentHashMap に置き換え。
-
startElement
要素の開始通知を受け取ります。 インタフェース ContentHandler 内の startElement- 定義:
startElement
インタフェース内ContentHandler
- オーバーライド:
startElement
クラス内DefaultHandler
- パラメータ:
uri
- 名前空間 URI。要素が名前空間 URI を持たない場合、または名前空間処理が実行されない場合は nulllocalName
- 前置修飾子を含まないローカル名。名前空間処理が行われない場合は空文字列qName
- 接頭辞を持つ修飾名。修飾名を使用できない場合は空文字列attributes
- 要素に付加された属性。属性が存在しない場合、空の Attributesオブジェクト- 関連項目:
-
characters
要素内の文字データの通知を受け取ります。 エンティティー内かどうかを判断する、inEntity フラグが true の間は、 何も処理しません。 インタフェース ContentHandler 内の characters- 定義:
characters
インタフェース内ContentHandler
- オーバーライド:
characters
クラス内DefaultHandler
- パラメータ:
cbuf
- 文字データ配列off
- 文字配列内の開始位置len
- 文字配列から使用される文字数- 関連項目:
-
startCDATA
CDATA セクションの開始を報告します。 CDATA セクションのコンテンツは、正規の characters イベントを介して報告されます。 このイベントは境界の報告だけに使用されます。 インタフェース LexicalHandler 内の startCDATA- 定義:
startCDATA
インタフェース内LexicalHandler
- オーバーライド:
startCDATA
クラス内DefaultHandler2
- 関連項目:
-
endCDATA
CDATA セクションの終わりを報告します。 インタフェース LexicalHandler 内の endCDATA- 定義:
endCDATA
インタフェース内LexicalHandler
- オーバーライド:
endCDATA
クラス内DefaultHandler2
- 関連項目:
-
startDTD
DTD 宣言がある場合、その開始を報告します。 start/endDTD イベントは、ContentHandler の start/endDocument イベント内の最初の startElement イベントの前に出現します。 インタフェース LexicalHandler 内の startDTD- 定義:
startDTD
インタフェース内LexicalHandler
- オーバーライド:
startDTD
クラス内DefaultHandler2
- パラメータ:
name
- 文書型名publicId
- 宣言された外部 DTD サブセットの公開識別子。 宣言されていない場合は nullsystemId
- 宣言された外部 DTD サブセットのシステム識別子。 宣言されていない場合は null。 ドキュメントのベース URI に対しては解決されないことに 注意すること- 関連項目:
-
endDTD
DTD 宣言の終わりを報告します。 このメソッドは、DOCTYPE 宣言の終わりを報告するメソッドです。 ここでは、何もしません。 インタフェース LexicalHandler 内の endDTD- 定義:
endDTD
インタフェース内LexicalHandler
- オーバーライド:
endDTD
クラス内DefaultHandler2
- 関連項目:
-
startEntity
内部および外部の XML エンティティーの一部の開始を報告します。 インタフェース LexicalHandler の記述: ※ ここでは、< などの文字列が、lt という名のエンティティーで 報告されるため、元の&付きの文字列に復元しています。 エンティティー内かどうかを判断する、inEntity フラグを true にセットします。 inEntity=true の間は、#characters(char[],int,int) は、何も処理しません。- 定義:
startEntity
インタフェース内LexicalHandler
- オーバーライド:
startEntity
クラス内DefaultHandler2
- パラメータ:
name
- エンティティーの名前- 関連項目:
-
endEntity
エンティティーの終わりを報告します。 インタフェース LexicalHandler の記述: ※ ここでは、inEntity=false を設定するだけです。- 定義:
endEntity
インタフェース内LexicalHandler
- オーバーライド:
endEntity
クラス内DefaultHandler2
- パラメータ:
name
- エンティティーの名前- 関連項目:
-
ignorableWhitespace
要素コンテンツに含まれる無視できる空白文字の通知を受け取ります。 インタフェース ContentHandler 内の ignorableWhitespace- 定義:
ignorableWhitespace
インタフェース内ContentHandler
- オーバーライド:
ignorableWhitespace
クラス内DefaultHandler
- パラメータ:
cbuf
- 文字データ配列(空白文字)off
- 文字配列内の開始位置len
- 文字配列から使用される文字数- 関連項目:
-
comment
文書内の任意の位置にある XML コメントを報告します。 インタフェース LexicalHandler の記述:- 定義:
comment
インタフェース内LexicalHandler
- オーバーライド:
comment
クラス内DefaultHandler2
- パラメータ:
cbuf
- 文字データ配列(コメント文字)off
- 配列内の開始位置len
- 配列から読み取られる文字数- 関連項目:
-
endElement
要素の終了通知を受け取ります。- 定義:
endElement
インタフェース内ContentHandler
- オーバーライド:
endElement
クラス内DefaultHandler
- パラメータ:
uri
- 名前空間 URI。要素が名前空間 URI を持たない場合、または名前空間処理が実行されない場合は nulllocalName
- 前置修飾子を含まないローカル名。名前空間処理が行われない場合は空文字列qName
- 接頭辞を持つ修飾名。修飾名を使用できない場合は空文字列- 関連項目:
-
warning
パーサー警告の通知を受け取ります。 インタフェース org.xml.sax.ErrorHandler 内の warning ここでは、パーサー警告の内容を標準エラーに表示します。- 定義:
warning
インタフェース内ErrorHandler
- オーバーライド:
warning
クラス内DefaultHandler
- パラメータ:
ex
- 例外として符号化された警告情報- 関連項目:
-
main
public static void main(String[] args) throws ReflectiveOperationException, NoSuchMethodException, InvocationTargetException サンプルプログラムです。 引数の IN がファイルの場合は、OUTもファイルとして扱います。 IN がフォルダの場合は、階層にしたがって、再帰的に処理を行い、OUT に出力します。 フォルダ階層をパースしている最中に、XMLとして処理できない、処理中にエラーが発生した などの場合は、バイナリコピーを行います。 "Usage: org.opengion.fukurou.xml.JspSaxParser <inFile|inDir> <outFile|outDir> [<JspParserFilter1> ・・・ ]"- パラメータ:
args
- コマンド引数配列- 例外:
ClassNotFoundException
- クラスが見つからない場合InstantiationException
- インスタンスを生成できなかった場合IllegalAccessException
- 不正なアクセスがあった場合NoSuchMethodException
- 特定のメソッドが見つからないInvocationTargetException
- 呼び出されるメソッドまたはコンストラクタがスローする例外をラップする、チェック済み例外ReflectiveOperationException
- 変更履歴:
- 6.3.9.1 (2015/11/27) A method/constructor shouldnt explicitly throw java.lang.Exception(PMD)。, 6.4.3.3 (2016/03/04) リフレクション系の例外の共通クラスに置き換えます。, 6.8.2.3 (2017/11/10) java9対応(cls.newInstance() → cls.getDeclaredConstructor().newInstance())
-