次のタグで XML を取得しています。私がしていることは、Sax パーサーを使用して Java で XML ファイルを読み取り、データベースに保存することです。しかし、以下のように p タグの後にスペースがあるようです。
<Inclusions><![CDATA[<p> </p><ul> <li>Small group walking tour</li> <li>Entrance fees</li> <li>Professional guide </li> <li>Guaranteed to skip the long lines</li> <li>Headsets to hear the guide clearly</li> </ul>
<p></p>]]></Inclusions>
しかし、読み取った文字列をデータベース (PostgreSQL 8) に挿入すると、これらのスペースに対して以下のような不適切な文字が出力されます。
\011\011\011\011\011\011\011\011\011\011\011\011
\012\011\011\011\011\011
- 小グループウォーキングツアー
- 入場料
- プロのガイド
- 長い行をスキップすることが保証されています
- ガイドをはっきりと聞くためのヘッドセット
なぜそのような悪い文字 (011\011) を印刷しているのか知りたいですか?
javaでXMLタグ内のスペースを削除する最良の方法は何ですか? (または、それらの悪いキャラクターを防ぐ方法。)
私はサンプルとそれらのほとんどをpythonサンプルでチェックしました。
これは、私のプログラムで SAX を使用して XML を読み取る方法です。
方法 1
// ResultHandler is the class that used to read the XML.
ResultHandler handler = new ResultHandler();
// Use the default parser
SAXParserFactory factory = SAXParserFactory.newInstance();
// Retrieve the XML file
FileInputStream in = new FileInputStream(new File(inputFile)); // input file is XML.
// Parse the XML input
SAXParser saxParser = factory.newSAXParser();
saxParser.parse( in , handler);
これは、メソッド 1 を使用して ResultHandler クラスが XML を Sax パーサーとして読み取るために使用した方法です。
import org.apache.log4j.Logger;
import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
// other imports
class ResultHandler extends DefaultHandler {
public void startDocument ()
{
logger.debug("Start document");
}
public void endDocument ()
{
logger.debug("End document");
}
public void startElement(String namespaceURI, String localName, String qName, Attributes attribs)
throws SAXException {
strValue = "";
// add logic with start of tag.
}
public void characters(char[] ch, int start, int length)
throws SAXException {
//logger.debug("characters");
strValue += new String(ch, start, length);
//logger.debug("strValue-->"+strValue);
}
public void endElement(String namespaceURI, String localName, String qName)
throws SAXException {
// add logic to end of tag.
}
}
setIgnoringElementContentWhitespace(true) などを sax パーサーで設定する方法を知る必要があります。