Penyelesaian kepada pengecualian ralat penghuraian XML Java (XMLParsingErrorException)
Dalam proses pembangunan Java, XML sering digunakan untuk menyimpan dan memindahkan data. Walau bagaimanapun, disebabkan oleh kerumitan dan spesifikasi sintaks XML, pengecualian ralat penghuraian XML (XMLParsingErrorException) kadangkala berlaku. Artikel ini menerangkan beberapa penyelesaian biasa dan menyediakan contoh kod yang sepadan.
Berikut ialah contoh kod untuk pengesahan format XML menggunakan Java:
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; } } }
Berikut ialah contoh kod untuk menghurai XML menggunakan DOM:
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(); } } }
Berikut ialah contoh kod untuk mengendalikan aksara yang menyalahi undang-undang:
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); } }
Gunakan penapis ini:
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(); } } }
Perlu diambil perhatian bahawa kod di atas hanya menyediakan beberapa penyelesaian dan contoh biasa, dan penggunaan sebenar mungkin berbeza-beza bergantung pada keperluan tertentu. berbeza-beza bergantung kepada keadaan yang tidak normal. Oleh itu, apabila mengendalikan pengecualian ralat penghuraian XML, pelarasan dan pemprosesan yang sesuai perlu dibuat mengikut situasi sebenar.
Ringkasan:
Artikel ini memperkenalkan beberapa penyelesaian untuk menyelesaikan pengecualian ralat penghuraian XML Java dan menyediakan contoh kod yang sepadan. Dengan mengesahkan format fail XML, menyemak versi penghurai XML dan mengendalikan pengecualian ralat penghuraian XML tertentu, pengecualian ralat penghuraian XML Java boleh diselesaikan dengan berkesan dan kebolehpercayaan dan kestabilan program boleh dipertingkatkan. Pembaca dinasihatkan untuk membuat pelarasan dan rawatan yang sesuai berdasarkan keadaan tertentu dalam amalan.
Atas ialah kandungan terperinci Penyelesaian untuk menyelesaikan pengecualian ralat penghuraian XML Java (XMLParsingErrorExceotion). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!