В этой статье показано, как использовать анализатор SAX для чтения или анализа XML-файла UTF-8.
Содержание
- 1. Синтаксический анализатор SAX для анализа XML-файла UTF-8.
- 2. Кодировка символов в XML и коде
- 3. Распространенные ошибки саксофона
- 3.1 Недопустимый байт 1 из 1-байтовой последовательности UTF-8
- 3.2 Содержание не допускается в прологе
- 3.3 Имя сущности должно сразу следовать за “&” в ссылке на сущность
- 4. Скачать Исходный Код
- 5. Рекомендации
1. Синтаксический анализатор SAX для анализа XML-файла UTF-8.
1.1 XML-файл содержит UTF-8 и китайские иероглифы.
揚木金 support & code 5000 yflow admin 8000
1.2 В приведенном ниже примере явно задана кодировка UTF-8 .
Примечание Для обработчика SAX PrintAllHandlerSax обратитесь к этой статье .
package com.mkyong.xml.sax;
import com.mkyong.xml.sax.handler.PrintAllHandlerSax;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
public class ReadXmlSaxParser {
private static final String FILENAME = "src/main/resources/staff-unicode.xml";
public static void main(String[] args) {
SAXParserFactory factory = SAXParserFactory.newInstance();
try {
SAXParser saxParser = factory.newSAXParser();
PrintAllHandlerSax handler = new PrintAllHandlerSax();
XMLReader xmlReader = saxParser.getXMLReader();
xmlReader.setContentHandler(handler);
InputSource source = new InputSource(FILENAME);
// explicitly set a encoding
source.setEncoding(StandardCharsets.UTF_8.displayName());
xmlReader.parse(source);
} catch (ParserConfigurationException | SAXException | IOException e) {
e.printStackTrace();
}
}
}
Выход
Start Document Start Element : Company Start Element : staff Staff id : 1001 Start Element : name End Element : name Name : 揚木金 Start Element : role End Element : role Role : support & code Start Element : salary Currency :USD End Element : salary Salary : 5000 Start Element : bio End Element : bio Bio : HTML tag testing End Element : staff Start Element : staff Staff id : 1002 Start Element : name End Element : name Name : yflow Start Element : role End Element : role Role : admin Start Element : salary Currency :EUR End Element : salary Salary : 8000 Start Element : bio End Element : bio Bio : a & b End Element : staff End Element : Company End Document
2. Кодировка символов в XML и коде
Убедитесь, что мы используем правильную кодировку для синтаксического анализа XML-файла.
2.1 Для XML-файлов , лучше всего объявить атрибут кодировка .
Например, ниже приведен XML-файл в кодировке UTF-8.
2.2 Для синтаксического анализатора SAX мы можем установить кодировку с помощью XmlReader .
SAXParserFactory factory = SAXParserFactory.newInstance();
try {
SAXParser saxParser = factory.newSAXParser();
PrintAllHandlerSax handler = new PrintAllHandlerSax();
XMLReader xmlReader = saxParser.getXMLReader();
xmlReader.setContentHandler(handler);
InputSource source = new InputSource(FILENAME);
// utf-8
source.setEncoding(StandardCharsets.UTF_8.displayName());
// utf-16
// source.setEncoding(StandardCharsets.UTF_16.displayName());
// ascii
// source.setEncoding(StandardCharsets.US_ASCII.displayName());
xmlReader.parse(source);
} catch (ParserConfigurationException | SAXException | IOException e) {
e.printStackTrace();
}
3. Распространенные ошибки саксофона
Ниже приведены некоторые распространенные ошибки при синтаксическом анализе SAX XML.
3.1 Недопустимый байт 1 из 1-байтовой последовательности UTF-8
XML-файл содержит недопустимые символы UTF-8, прочтите это.
3.2 Содержание не допускается в прологе
XML-файл содержит недопустимый текст или спецификацию перед объявлением XML, прочитайте это.
3.3 Имя сущности должно сразу следовать за “&” в ссылке на сущность
& является недопустимым символом в XML-файле, пожалуйста, замените его на & или оберните с помощью CDATA, например [ CDATA[a и b]]> .
4. Скачать Исходный Код
$клон git $клон git
$компакт-диск java-xml
$cd src/основной/java/com/mkyong/xml/саксофон/
5. Рекомендации
- Википедия – UTF-8
- Таблица кодирования UTF-8 и символы Юникода
- Апач ксерксес
- Синтаксический анализатор Java SAX
- SAX –Контент не разрешен в прологе
- SAX – Недопустимый байт 1 из 1-байтовой последовательности UTF-8
- Как читать XML-файл на Java (синтаксический анализатор SAX)
Оригинал: “https://mkyong.com/java/how-to-read-utf-8-xml-file-in-java-sax-parser/”