Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何解决[org.xml.sax.saxpasseeption;行号:1;列号:1;prolog中不允许包含内容。]_Java_Xml - Fatal编程技术网

Java 如何解决[org.xml.sax.saxpasseeption;行号:1;列号:1;prolog中不允许包含内容。]

Java 如何解决[org.xml.sax.saxpasseeption;行号:1;列号:1;prolog中不允许包含内容。],java,xml,Java,Xml,下面是我的xml示例 我的编码是 JAXBContext jaxbContext = JAXBContext.newInstance(NewsMLObj.class); SAXParserFactory spf = SAXParserFactory.newInstance(); XMLReader xr = spf.newSAXParser().getXMLReader(); // to bypass XML DocType and Entit

下面是我的xml示例

我的编码是

JAXBContext jaxbContext = JAXBContext.newInstance(NewsMLObj.class);
        SAXParserFactory spf = SAXParserFactory.newInstance();
        XMLReader xr = spf.newSAXParser().getXMLReader();

        // to bypass XML DocType and Entity as Jap did not provide proper XML
        xr.setFeature("http://xml.org/sax/features/validation", false);
        xr.setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false);
        xr.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
        xr.setFeature("http://xml.org/sax/features/external-general-entities", false);
        xr.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
        xr.setFeature("http://xml.org/sax/features/use-entity-resolver2", false);

        InputSource is = new InputSource(new FileReader(factoryType.serverXML.getInputFile2() + filename));
        SAXSource source = new SAXSource(xr, is);
        out.println("input source=" + is);
        javax.xml.bind.Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
        out.println("jaxbUnmarshaller =" + jaxbUnmarshaller);
        NewsMLObj nmo = (NewsMLObj) jaxbUnmarshaller.unmarshal(source);
运行“nmo”时,出现错误“javax.xml.bind.UnmarshalException” -除此之外: [org.xml.sax.SAXParseException;行号:1;列号:1;prolog中不允许包含内容。]”

是我的编码有问题吗?如何解决我的问题

谢谢并致以最良好的问候
Sharon

似乎您的xml文件在序言之前写入了一些数据。 字符串前不应有任何内容,如下所示:

<?xml version="1.0" encoding="UTF-8"?>

您的xml文件似乎在序言之前写入了一些数据。 字符串前不应有任何内容,如下所示:

<?xml version="1.0" encoding="UTF-8"?>


错误消息“Prolog中不允许内容”的出现可能有多种原因。这基本上意味着解析器在成功读取文档中第一个有意义的内容之前发现了错误。这可能是(如消息所示),因为文档的开头不是“错误消息”Prolog中不允许内容“的原因很多。这基本上意味着解析器在成功读取文档中第一个有意义的内容之前发现了错误。这可能是(如信息所示)因为文档的开头不是“看起来您的XML无效。如果页面上有不可打印的字符,请使用十六进制编辑器进行查看beginning@Jens如何说XML无效?请提供善意的建议?我该怎么做?我也有同样的问题。原来IDE是用随机代码生成文件的。转到Build**>**Rebuild Project,它会告诉你哪个文件包含错误。我的如果你有同样的问题,这里可能会有帮助。它对meLooks有效,比如你的xml无效。如果页面上有不可打印的字符,请使用十六进制编辑器查看beginning@Jens如何说XML无效?请善意的建议?我应该怎么做?我有同样的问题。原来IDE是用随机c生成文件的odes.go to Build**>**Rebuild Project它会告诉你哪个文件包含错误。如果你有相同的问题,我的文件是color.xml,这里的可能会有帮助。它对mei有效,在这种情况下,你可以尝试过滤掉不属于那里的内容。简单的方法是先读取字符串,清除它,然后按i键如果文件太大,那么您可以编写自己的过滤流。在本例中,我只是在之前检查它,您可以尝试过滤掉不属于它的内容。简单的方法是先读取字符串,清理它并将其推送到SAXParser。如果文件太大,那么您可以编写自己的过滤流流动
new FileReader(factoryType.serverXML.getInputFile2() + filename)