如何在java中将多个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

我有几个不同节点结构的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 allowed.
搜索后,我发现出现上述错误是因为xml内容之间存在“”


我应该先修改xml文件还是有其他方法来处理这种情况?

使用文本编辑器编辑xml文件。在第一行的最开始处,查找并删除所有前导空格


xml的以下第一行在第一个“之前不得有任何空格或字符。请使用文本编辑器编辑xml文件。在第一行的最开头,查找并删除任何前导空格

xml的以下第一行在第一行之前不得有任何空格或字符“ 我应该先修改xml文件吗

是的,你应该

。。。还有别的办法处理这种情况吗

那么,您可以尝试围绕XML无效这一事实进行编程:

  • 如果问题很小并且是孤立的,您可以尝试对文件进行初始传递以“修复”它。然后使用常规XML解析器解析它

  • 如果问题太普遍,您可以尝试将XML视为文本,并尝试在没有正确解析的情况下提取数据

但这两种方法的问题在于,当你试图弥补失败时,你可能会得到坏的或丢失的数据;e、 因为XML以不同的方式变得不好

因此,我的建议是要么使用文本编辑器手动修复XML(如果这是一次性的),要么让创建它的人/任何人来修复源代码处的问题


顺便说一句,一旦修复了XML语法问题,您就可以仅使用XSLT来拾取和合并XML文件

我应该先修改xml文件吗

是的,你应该

。。。还有别的办法处理这种情况吗

那么,您可以尝试围绕XML无效这一事实进行编程:

  • 如果问题很小并且是孤立的,您可以尝试对文件进行初始传递以“修复”它。然后使用常规XML解析器解析它

  • 如果问题太普遍,您可以尝试将XML视为文本,并尝试在没有正确解析的情况下提取数据

但这两种方法的问题在于,当你试图弥补失败时,你可能会得到坏的或丢失的数据;e、 因为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文件处理。有谁有更好的解决办法吗?