Rumah > Java > javaTutorial > teks badan

Penyelesaian untuk menyelesaikan pengecualian ralat penghuraian XML Java (XMLParsingErrorExceotion)

王林
Lepaskan: 2023-08-17 09:37:14
asal
2240 orang telah melayarinya

解决Java XML解析错误异常(XMLParsingErrorExceotion)的解决方案

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.

  1. Sahkan format fail XML
    Fail XML mesti mematuhi format tertentu, termasuk penutupan teg yang betul, format atribut yang betul, dsb. Menggunakan alat pengesahan XML boleh membantu menyemak sama ada fail XML diformat dengan betul.

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;
        }
    }
}
Salin selepas log masuk
  1. Semak versi penghurai XML
    Versi penghurai XML yang berbeza mungkin mempunyai peraturan penghuraian yang berbeza untuk XML, menyebabkan ralat penghuraian. Pastikan versi penghurai XML yang anda gunakan serasi dengan format fail XML.

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();
        }
    }
}
Salin selepas log masuk
  1. Mengendalikan pengecualian ralat penghuraian XML khusus
    Selain pengecualian ralat penghuraian XML biasa, pengecualian ralat penghuraian XML tertentu kadangkala berlaku. Contohnya, memproses apabila aksara haram atau aksara khas ditemui, dsb. Lakukan pemprosesan yang sepadan berdasarkan maklumat pengecualian khusus, seperti menapis aksara yang tidak boleh dihuraikan atau menggunakan pengekodan aksara tertentu.

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);
    }
}
Salin selepas log masuk

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();
        }
    }
}
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!