0

次のような属性を含む XML ドキュメントがあります。

<Tag Body="&lt;p&gt;">

Body 属性のテキストをそのまま保持したい。ただし、解析メソッドはテキストを "<p>" に変換しています。「&」、「l」、「t」、「;」などを保持したい

次のように、Java SAX API を使用して XML ドキュメントを解析しています。

    SAXParserFactory spf = SAXParserFactory.newInstance();
    SAXParser saxParser = spf.newSAXParser();
    XMLReader xmlReader = saxParser.getXMLReader();
    xmlReader.setContentHandler(new MyHandler());
    xmlReader.setErrorHandler(new MyErrorHandler(System.err));
    xmlReader.parse(convertToFileURL(myFileName));

関連するコードMyHandler.javaは次のとおりです。

public void startElement(String namespaceURI, String localName, String qName, Attributes atts)
throws SAXException
{
    if (qName.equals("Tag")){
        String Body = atts.getValue("Body");
        char []s = Body.toCharArray();  // s[0] will be "<", but I want it to be "&"
    }
}

解析メソッドで属性テキストをそのままにして、何も変換しようとしないようにするにはどうすればよいですか?

4

1 に答える 1

0

私は自分の質問に答えます。

そもそもパーサーがテキストをエスケープ解除するのを止める方法は見つかりませんでしたが、後で Apache Commons を使用して再度エスケープするための回避策 (@user1516873) を見つけました。

String Body = atts.getValue("Body");
String Body_escaped = StringEscapeUtils.escapeXml(Body);

これにより、目的の結果が得られます。

于 2013-10-30T18:40:48.303 に答える