我已经将SOAP XML文件存储到本地机器中,以验证我需要加载该文件并从SOAP主体中提取XML以验证它。
SOAP XML
<SOAP:Envelope>
<SOAP:Body>
<request>
<Login>
<Username>abc</Username>
<Password>abc</Password>
</Login>
</request>
</SOAP:Body>
</SOAP:Envelope>
我需要提取&lt; Login&gt;来自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文件。
请帮忙。
答案 0 :(得分:0)
使用字符串操作来读取XML文档是一个经过充分测试的令人头痛和沮丧的方法。仅使用已发布的XML API。
一般方法是:
1)假设SOAP XML存储在文件中,请使用JAXP API将XML解析为Document
对象。
2)使用XPath导航到Login
元素(使用JDK中包含的标准Java XPath API)。
3)引用Login
元素后,使用JAXP Transformer
将Login
元素序列化为字符串。
(如果通过使用其中一个标准Web服务API接收到SOAP数据包,则步骤(1)会发生变化。您提到SOAP数据包是以存储在文件中的形式提供的)