Java XML 解析エラー例外 (XMLParsingErrorException) を解決するソリューション
Java 開発プロセスでは、データの保存と転送に XML がよく使用されます。ただし、XML の複雑さと構文仕様により、XML 解析エラー例外 (XMLParsingErrorException) が発生することがあります。この記事では、いくつかの一般的な解決策について説明し、対応するコード例を示します。
次に、Java を使用した XML 形式検証のコード例を示します。
import javax.xml.XMLConstants; import javax.xml.transform.Source; import javax.xml.transform.stream.StreamSource; import javax.xml.validation.Schema; import javax.xml.validation.SchemaFactory; import javax.xml.validation.Validator; import org.xml.sax.SAXException; import java.io.File; import java.io.IOException; public class XMLValidator { public static void main(String[] args) { String xmlFilePath = "path/to/xml/file.xml"; String xsdFilePath = "path/to/xsd/file.xsd"; boolean isValid = validateXML(xmlFilePath, xsdFilePath); System.out.println("XML文件是否有效: " + isValid); } public static boolean validateXML(String xmlFilePath, String xsdFilePath) { try { Source xmlFile = new StreamSource(new File(xmlFilePath)); SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); Schema schema = schemaFactory.newSchema(new File(xsdFilePath)); Validator validator = schema.newValidator(); validator.validate(xmlFile); return true; } catch (SAXException | IOException e) { e.printStackTrace(); return false; } } }
DOM を使用して XML を解析するコード例を次に示します。
import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import org.w3c.dom.Document; import org.w3c.dom.NodeList; import org.w3c.dom.Node; import org.w3c.dom.Element; import java.io.File; public class XMLParser { public static void main(String[] args) { String xmlFilePath = "path/to/xml/file.xml"; parseXML(xmlFilePath); } public static void parseXML(String xmlFilePath) { try { File xmlFile = new File(xmlFilePath); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); Document doc = dBuilder.parse(xmlFile); doc.getDocumentElement().normalize(); NodeList nodeList = doc.getElementsByTagName("tag"); for (int i = 0; i < nodeList.getLength(); i++) { Node node = nodeList.item(i); if (node.getNodeType() == Node.ELEMENT_NODE) { Element element = (Element) node; // 处理节点数据 } } } catch (Exception e) { e.printStackTrace(); } } }
以下は、不正な文字を処理するためのコード例です:
import org.xml.sax.*; import org.xml.sax.helpers.XMLFilterImpl; import java.io.IOException; public class IllegalCharacterFilter extends XMLFilterImpl { public void characters(char[] ch, int start, int length) throws SAXException { for (int i = start; i < start + length; i++) { if (Character.isHighSurrogate(ch[i]) || Character.isLowSurrogate(ch[i])) { // 过滤非法字符 ch[i] = 'uFFFD'; } } super.characters(ch, start, length); } }
このフィルターを使用します:
import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.InputSource; import org.xml.sax.XMLReader; import java.io.File; public class XMLParser { public static void main(String[] args) { String xmlFilePath = "path/to/xml/file.xml"; parseXML(xmlFilePath); } public static void parseXML(String xmlFilePath) { try { File xmlFile = new File(xmlFilePath); InputSource inputSource = new InputSource(xmlFile.toURI().toString()); SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); SAXParser saxParser = saxParserFactory.newSAXParser(); XMLReader xmlReader = saxParser.getXMLReader(); xmlReader.setContentHandler(new MyContentHandler()); xmlReader.setErrorHandler(new MyErrorHandler()); xmlReader.parse(inputSource); } catch (Exception e) { e.printStackTrace(); } } }
上記のコードは、いくつかの一般的なもののみを提供していることに注意してください。解決策と例は、特定のニーズと例外に応じて異なる場合があります。したがって、XML 解析エラーの例外を処理する場合は、実際の状況に応じて適切な調整と処理を行う必要があります。
概要:
この記事では、Java XML 解析エラー例外を解決するためのいくつかのソリューションを紹介し、対応するコード例を示します。 XML ファイルの形式を検証し、XML パーサーのバージョンをチェックし、特定の XML 解析エラー例外を処理することにより、Java XML 解析エラー例外を効果的に解決し、プログラムの信頼性と安定性を向上させることができます。読者は、実際の特定の状況に基づいて適切な調整や処置を行うことをお勧めします。
以上がJava XML 解析エラー例外 (XMLParsingErrorExceotion) を解決するソリューションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。