【问题标题】:Apache Common FileUtils Read XML file into StringApache Common FileUtils 将 XML 文件读入字符串
【发布时间】:2012-08-08 07:56:52
【问题描述】:

我现在已将 SOAP XML 文件存储到本地机器中以验证 XML 我需要加载该文件并从 SOAP 正文中提取 XML 以对其进行验证。

SOAP XML

<SOAP:Envelope>
    <SOAP:Body>
        <request>
             <Login>
                <Username>abc</Username>
                <Password>abc</Password>
             </Login>
        </request>
    </SOAP:Body>
</SOAP:Envelope>

我需要从上面的 SOAP 请求中提取 XML。 我正在使用 FileUtils 将文件读入字符串。当我使用它读取文件时,它还会读取 \n\t\t 等字符,这意味着它会考虑 XML 格式文件中的换行符和制表符。

我使用以下代码从 XML 中提取子节点作为字符串。

InputStream requestXMLInputStream = new ByteArrayInputStream(soapRequestXML.getBytes());
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder;
String requestXMLBody = "";
Document doc = null;
try {
    dBuilder = dbFactory.newDocumentBuilder();
    doc = dBuilder.parse(requestXMLInputStream);        
    NodeList requestNodeList = doc.getElementsByTagName(parentTagName);
    Node node = requestNodeList.item(0);
    DOMImplementationLS domImplLS = (DOMImplementationLS) doc.getImplementation();
    LSSerializer serializer = domImplLS.createLSSerializer();
    if(node != null && node.getFirstChild() != null)
          requestXMLBody = serializer.writeToString(node.getFirstChild());
} catch (SAXException e) {
    logger.error(e.getMessage());
} catch (IOException e) {
    logger.error(e.getMessage());
}catch (ParserConfigurationException e) {
    logger.error(e.getMessage());
}

return requestXMLBody;

如何在没有这些字符的情况下读取 XML 文件。

请帮忙。

【问题讨论】:

    标签: xml-parsing apache-commons fileutils


    【解决方案1】:

    使用字符串操作来读取 XML 文档是一个经过充分测试的解决头痛和挫折的方法。为此,请仅使用已发布的 XML API。

    一般的做法是:

    1) 假设 SOAP XML 存储在文件中,使用 JAXP API 将 XML 解析为 Document 对象。

    2) 使用 XPath 导航到 Login 元素(使用 JDK 中包含的标准 Java XPath API)。

    3) 引用 Login 元素后,使用 JAXP TransformerLogin 元素序列化为字符串。

    (如果通过使用标准 Web 服务 API 之一接收到 SOAP 数据包,则步骤 (1) 将发生变化。您提到 SOAP 数据包是以存储在文件中的形式给出的)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-03
      • 2020-08-04
      • 2018-09-20
      相关资源
      最近更新 更多