读取XML文件时出错

时间:2018-03-27 08:11:47

标签: java xml

尝试读取此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 :(得分:0)

您向我们展示的文件格式正确且可解析。因为错误信息非常准确地说明错误的地方(在version="1.0"之后),我怀疑其中一个角色并不是它看起来的样子。也许引号实际上是&#34;智能引号&#34;,或者version="1.0"之后的空格实际上可能是一个不间断的空间。

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