如何在java中将多个xml文件组合成单个字符串
我有几个不同节点结构的xml文件。我想从这些xml文件中提取xml内容,并将前者(xml内容)存储为单个字符串 我使用下面的代码来实现它如何在java中将多个xml文件组合成单个字符串,java,xml,Java,Xml,我有几个不同节点结构的xml文件。我想从这些xml文件中提取xml内容,并将前者(xml内容)存储为单个字符串 我使用下面的代码来实现它 String xmlContent = FileUtils.readFileToString(new File("xyz"), "UTF-8"); 但我面临以下错误 [Fatal Error] :5616:15: The processing instruction target matching "[xX][mM][lL]" is not a
String xmlContent = FileUtils.readFileToString(new File("xyz"), "UTF-8");
但我面临以下错误
[Fatal Error] :5616:15: The processing instruction target matching "[xX][mM][lL]" is not allowed.
搜索后,我发现出现上述错误是因为xml内容之间存在“”
我应该先修改xml文件还是有其他方法来处理这种情况?使用文本编辑器编辑xml文件。在第一行的最开始处,查找并删除所有前导空格
xml的以下第一行在第一个“之前不得有任何空格或字符。请使用文本编辑器编辑xml文件。在第一行的最开头,查找并删除任何前导空格 xml的以下第一行在第一行之前不得有任何空格或字符“ 我应该先修改xml文件吗 是的,你应该 。。。还有别的办法处理这种情况吗 那么,您可以尝试围绕XML无效这一事实进行编程:
- 如果问题很小并且是孤立的,您可以尝试对文件进行初始传递以“修复”它。然后使用常规XML解析器解析它
- 如果问题太普遍,您可以尝试将XML视为文本,并尝试在没有正确解析的情况下提取数据
顺便说一句,一旦修复了XML语法问题,您就可以仅使用XSLT来拾取和合并XML文件 我应该先修改xml文件吗 是的,你应该 。。。还有别的办法处理这种情况吗 那么,您可以尝试围绕XML无效这一事实进行编程:
- 如果问题很小并且是孤立的,您可以尝试对文件进行初始传递以“修复”它。然后使用常规XML解析器解析它
- 如果问题太普遍,您可以尝试将XML视为文本,并尝试在没有正确解析的情况下提取数据
顺便说一句,一旦您解决了XML语法问题,您就可以仅使用XSLT来拾取和合并XML文件。经过一些努力,我将内容合并到一个XML文件中:) 以下方法删除xml编码节点并字符串化xml文件
public String stringifyXmlFiles(String fileName) {
File file = new File(fileName);
String content = "";
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new FileInputStream(file));
TransformerFactory tranFactory = TransformerFactory.newInstance();
Transformer aTransformer = tranFactory.newTransformer();
aTransformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,
"yes");
aTransformer.setOutputProperty(OutputKeys.INDENT, "yes");
Source src = new DOMSource(document);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
Result dest = new StreamResult(stream);
aTransformer.transform(src, dest);
content = stream.toString();
} catch (ParserConfigurationException e) {
logger.error(e.getMessage(), e);
} catch (SAXException e) {
logger.error(e.getMessage(), e);
} catch (IOException e) {
logger.error(e.getMessage(), e);
} catch (TransformerConfigurationException e) {
logger.error(e.getMessage(), e);
} catch (TransformerException e) {
logger.error(e.getMessage(), e);
}
return content;
}
经过一些努力,我将内容合并到一个xml文件中:) 以下方法删除xml编码节点并字符串化xml文件
public String stringifyXmlFiles(String fileName) {
File file = new File(fileName);
String content = "";
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new FileInputStream(file));
TransformerFactory tranFactory = TransformerFactory.newInstance();
Transformer aTransformer = tranFactory.newTransformer();
aTransformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,
"yes");
aTransformer.setOutputProperty(OutputKeys.INDENT, "yes");
Source src = new DOMSource(document);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
Result dest = new StreamResult(stream);
aTransformer.transform(src, dest);
content = stream.toString();
} catch (ParserConfigurationException e) {
logger.error(e.getMessage(), e);
} catch (SAXException e) {
logger.error(e.getMessage(), e);
} catch (IOException e) {
logger.error(e.getMessage(), e);
} catch (TransformerConfigurationException e) {
logger.error(e.getMessage(), e);
} catch (TransformerException e) {
logger.error(e.getMessage(), e);
}
return content;
}
是的,修改您的XML文件,使其有效。但我希望使我的代码尽可能通用…而且XML文件的数量非常多…因此我正在寻找更通用的方法…不清楚您试图做什么以及为什么。您不能只读取一堆XML文件,然后期望将它们连接成一个有用的字符串。XML需要一个根标记;那不是你最终会得到的。不要担心通用型-现在你什么都没有。我有多个xml文件要在eclipse以外的外部目录中处理……我已经为处理准备了一个xsl文件。我希望复制所有xml文件的内容,并将其存储到一个xml文件中,该文件临时驻留在工作区内的项目目录中,然后应用xslt文件处理。有人有更好的解决方案吗?是的,修改你的XML文件,使其有效。但我想使我的代码尽可能通用…而且XML文件的数量非常多…因此我正在寻找更通用的方法…不清楚你想做什么以及为什么。您不能只读取一堆XML文件,然后期望将它们连接成一个有用的字符串。XML需要一个根标记;那不是你最终会得到的。不要担心通用型-现在你什么都没有。我有多个xml文件要在eclipse以外的外部目录中处理……我已经为处理准备了一个xsl文件。我希望复制所有xml文件的内容,并将其存储到一个xml文件中,该文件临时驻留在工作区内的项目目录中,然后应用xslt文件处理。有谁有更好的解决办法吗?