首页 文章

读取XML文件时出错

提问于
浏览
-2

我在尝试读取此xml文件时出错:

<?xml version="1.0" encoding="UTF-8"?>
<job>
    <id>B002</id>
    <name>Name</name>
    <time>every day 1:00</time>
</job>

它说:

org.xml.sax.SAXParseException; systemId:file:/// D:/JobManagement.xml; lineNumber:1; columnNumber:20;期望伪属性名称 . .

我在谷歌搜索并找出解决这个问题的一些方法,但他们没有工作 . 我在以下链接中使用来自Mykong.com的SAX Parser代码:

https://www.mkyong.com/java/how-to-read-xml-file-in-java-sax-parser/

我必须尽快解决这个问题,所以我没有足够的时间来学习它 . 请帮我 . 上面的xml代码只是我文件的一部分 .

public class JobManagementService {
public void ReadXMLFile() {

        try {

            SAXParserFactory factory = SAXParserFactory.newInstance();
            SAXParser saxParser = factory.newSAXParser();

            DefaultHandler handler = new DefaultHandler() {

                boolean bfname = false;
                boolean blname = false;
                boolean bnname = false;
                boolean bsalary = false;

                public void startElement(String uri, String localName, String qName, Attributes attributes)
                        throws SAXException {

                    System.out.println("Start Element :" + qName);

                    if (qName.equalsIgnoreCase("FIRSTNAME")) {
                        bfname = true;
                    }

                    if (qName.equalsIgnoreCase("LASTNAME")) {
                        blname = true;
                    }

                    if (qName.equalsIgnoreCase("NICKNAME")) {
                        bnname = true;
                    }

                    if (qName.equalsIgnoreCase("SALARY")) {
                        bsalary = true;
                    }

                }

                public void endElement(String uri, String localName, String qName) throws SAXException {

                    System.out.println("End Element :" + qName);

                }

                public void characters(char ch[], int start, int length) throws SAXException {

                    if (bfname) {
                        System.out.println("First Name : " + new String(ch, start, length));
                        bfname = false;
                    }

                    if (blname) {
                        System.out.println("Last Name : " + new String(ch, start, length));
                        blname = false;
                    }

                    if (bnname) {
                        System.out.println("Nick Name : " + new String(ch, start, length));
                        bnname = false;
                    }

                    if (bsalary) {
                        System.out.println("Salary : " + new String(ch, start, length));
                        bsalary = false;
                    }

                }

            };

            saxParser.parse("D:\\JobManagement.xml", handler);

        } catch (Exception e) {
            e.printStackTrace();
        }
}

}

我在这里调用ReadXMLFile方法

@GetMapping("/jobManagement")
public String home() {
    jobManagementService.ReadXMLFile();
    return "/jobManagement";
}

我只是想在应用之前测试这个功能

1 回答

  • 0

    您向我们展示的文件格式正确且可解析 . 因为错误信息非常准确地说错了什么地方(就在 version="1.0" 之后),我怀疑其中一个字符不是它看起来的样子 . 也许引号实际上是"smart quotes",或者 version="1.0" 之后的空间实际上可能是一个不间断的空间 .

    (顺便说一句,告诉我们你赶时间并且不想彻底调查问题会让很多人不回答你的问题 . 我们本质上是问题解决者,我们喜欢深入了解问题并且与那些表示不想从他们身边付出任何努力的人合作通常不会很有益 . )

相关问题