文字エンティティを含む XML を解析する必要があるプログラムがあります。プログラム自体はそれらを解決する必要はなく、それらのリストは大きく、変更される可能性があるため、可能であればこれらのエンティティの明示的なサポートを避けたい.
簡単な例を次に示します。
<?xml version="1.0" encoding="UTF-8"?>
<xml>Hello there &something;</xml>
(非標準の) 文字エンティティを解決せずにドキュメントを正常に解析できる Java XML API はありますか? 理想的には、それらを特別に処理できる特別なイベントまたはオブジェクトに変換することですが、私はそれらを黙って抑制するオプションに落ち着きます.
答えと例:
Skaffman は私に答えをくれました: IS_REPLACING_ENTITY_REFERENCES
false に設定された StAX パーサーを使用してください。
これを試すために作成したコードは次のとおりです。
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
inputFactory.setProperty(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES, false);
XMLEventReader reader = inputFactory.createXMLEventReader(
new FileInputStream("your file here"));
while (reader.hasNext()) {
XMLEvent event = reader.nextEvent();
if (event.isEntityReference()) {
EntityReference ref = (EntityReference) event;
System.out.println("Entity Reference: " + ref.getName());
}
}
上記の XML の場合、" Entity Reference: something
" が出力されます。