Package nablarch.core.dataformat
Class XmlDataParser
java.lang.Object
nablarch.core.dataformat.StructuredDataEditorSupport
nablarch.core.dataformat.XmlDataParser
- All Implemented Interfaces:
StructuredDataParser
XMLパーサー。
この実装ではDOMを使用してXMLデータの解析を行います。 5u14より、DTDの使用を禁止するように修正を行った。これはXXE攻撃を防ぐためである。 後方互換性を維持するため、DTDの使用を許可するプロパティを設けている(
この実装ではDOMを使用してXMLデータの解析を行います。 5u14より、DTDの使用を禁止するように修正を行った。これはXXE攻撃を防ぐためである。 後方互換性を維持するため、DTDの使用を許可するプロパティを設けている(
setAllowDTD(boolean)
)。
読み込み対象となるXMLが信頼できるものであり、かつ、DTDを使用しなければならない場合のみ、
本プロパティを使用してDTDの使用を許可することができる。-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected DocumentBuilderFactory
createDocumentBuilderFactory
(LayoutDefinition layoutDef) 本クラスで使用するDocumentBuilderFactory
のインスタンスを生成する。parseData
(InputStream xml, LayoutDefinition layoutDef) フラットマップを作成します。void
setAllowDTD
(boolean allowDTD) DTDの使用を許可する。 デフォルトは「許可しない」(false
)。void
setContentName
(String contentName) 属性あり要素のコンテンツ名を設定する。Methods inherited from class nablarch.core.dataformat.StructuredDataEditorSupport
buildMapKey, checkArrayLength, checkIndispensable, checkRequired, convertToFieldOnRead, convertToFieldOnWrite, isObjectType
-
Constructor Details
-
XmlDataParser
public XmlDataParser()
-
-
Method Details
-
parseData
public Map<String,?> parseData(InputStream xml, LayoutDefinition layoutDef) throws IOException, InvalidDataFormatException フラットマップを作成します。- Specified by:
parseData
in interfaceStructuredDataParser
- Parameters:
xml
- XML文字列layoutDef
- フォーマット定義- Returns:
- フラットマップ
- Throws:
IOException
- 読み込みに伴うIO処理で問題が発生した場合InvalidDataFormatException
- 読み込んだデータがフォーマット定義に違反している場合
-
createDocumentBuilderFactory
protected DocumentBuilderFactory createDocumentBuilderFactory(LayoutDefinition layoutDef) throws ParserConfigurationException 本クラスで使用するDocumentBuilderFactory
のインスタンスを生成する。- Parameters:
layoutDef
- レイアウト定義 (本実装では使用しないがオーバーライド用に用意している。)- Returns:
DocumentBuilderFactory
のインスタンス- Throws:
ParserConfigurationException
-DocumentBuilderFactory.setFeature(String, boolean)
に失敗した場合
-
setContentName
属性あり要素のコンテンツ名を設定する。- Parameters:
contentName
- 属性あり要素のコンテンツ名
-
setAllowDTD
public void setAllowDTD(boolean allowDTD) DTDの使用を許可する。 デフォルトは「許可しない」(false
)。- Parameters:
allowDTD
- 許可する場合、真
-