gpt4 book ai didi

java - xml 保存并解析 : org. xml.sax.SAXParseException:序言中不允许内容

转载 作者:行者123 更新时间:2023-12-01 14:21:29 24 4
gpt4 key购买 nike

我用 java 处理 XML 文件。

如果我处理一次 xml 文件,那就可以了。总是成功完成。

但是,如果我处理 xml 文件两次以上(保存 - 读取 - 保存),总是会出现这样的错误。

org.xml.sax.SAXParseException: Content is not allowed in prolog.
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:264)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:292)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:172)

这是我的代码。这段代码有什么问题?

public static boolean save1(String baseDir) throws Exception {
boolean result = true;

File file = new File(baseDir + "myfile.xml");
Document document;

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
document = builder.parse(file);

Element root = document.getDocumentElement();

NodeList nodeList = root.getElementsByTagName("root");
for (int i = 0; i < nodeList.getLength(); i++) {
Element node = (Element) nodeList.item(i);
NamedNodeMap attrs = node.getAttributes();
boolean isDefault = Boolean.valueOf(getText(attrs, "default"));
if (isDefault) {
attrs.getNamedItem("default_value").setNodeValue(Boolean.valueOf("false");
break;
}
}
save(document, file);
return result;
}

private static void save(Document doc, File xmlFile) throws Exception {
TransformerFactory tranFactory = TransformerFactory.newInstance();
Transformer transformer = tranFactory.newTransformer();

transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");

OutputFormat format = new OutputFormat(doc);
format.setIndenting(true);
format.setIndent(4);
format.setEncoding("utf-8");
format.setPreserveSpace(false);

BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(xmlFile), "UTF-8"));
XMLSerializer serializer = new XMLSerializer(out, format);
serializer.serialize(doc.getDocumentElement());
out.close();
}

最佳答案

消息“序言中不允许出现内容。”可以意味着很多事情;如果您尝试读取空文件或内容根本不是 XML 的文件,则通常会收到此消息。

我看不出这个示例有什么问题,但我会首先显示无法解析的(假定的)XML。

关于java - xml 保存并解析 : org. xml.sax.SAXParseException:序言中不允许内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17517765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com