SOAP XML ファイルをローカル マシンに保存して、そのファイルをロードし、SOAP 本文から XML を抽出して検証する必要があることを検証しました。
SOAP XML
<SOAP:Envelope>
<SOAP:Body>
<request>
<Login>
<Username>abc</Username>
<Password>abc</Password>
</Login>
</request>
</SOAP:Body>
</SOAP:Envelope>
上記の SOAP リクエストから <Login> 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 ファイルを読み取るにはどうすればよいですか。
助けてください。