Так что я хотел посмотреть, есть ли способ конвертировать XML-файл с мыльным сообщением в строку, а затем обновлять значения конкретных тегов , Вот те теги, о которых я говорю.Преобразование XML-файла, содержащего SOAP-сообщение, в строку и обновление значений определенных тегов
<o:Username>Bill</o:Username>
<o:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">Hello123</o:Password>
Что я первоначально сделал, было обновление XML-файл сам с новым пользователем и передать, как показано в приведенном ниже коде.
try {
String namespace = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd";
configProperties.load(SecurityTokenHandler.class.getResourceAsStream(PROPERTIES_FILE));
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
documentBuilderFactory.setNamespaceAware(true);
Document requestDoc = documentBuilderFactory.newDocumentBuilder().parse(SecurityTokenHandler.class.getResourceAsStream(SOAP_REQUEST_FILE));
Element docElement = requestDoc.getDocumentElement();
docElement.getElementsByTagNameNS(namespace, "Username").item(0).setTextContent(configProperties.getProperty("username"));
docElement.getElementsByTagNameNS(namespace,"Password").item(0).setTextContent(configProperties.getProperty("password"));
Transformer docTransformer = TransformerFactory.newInstance().newTransformer();
DOMSource source = new DOMSource(requestDoc);
StreamResult result = new StreamResult(SecurityTokenHandler.class.getResource(SOAP_REQUEST_FILE).getFile());
docTransformer.transform(source, result);
} catch(IOException | ParserConfigurationException | SAXException | TransformerException exception) {
LOGGER.error("There was an error loading the properties file", exception);
}
Однако, я узнал позже, что, как это файл ресурсов, я не разрешается изменять сам файл. Я должен хранить XML-файл в виде строки, обновлять значения пользователя и пароля без изменения файла, а затем возвращать массив байтов xml-файла с обновленными значениями (без изменения исходного документа). Любая идея, как я могу это сделать?
@aUserHimself Какие-нибудь подсказки? –
Как насчет использования преобразования XSLT? Похоже, это было бы простое преобразование. Если вы считаете, что это вариант, пожалуйста, перефразируйте вопрос следующим образом: покажите полный входной XML-файл и выходной XML-файл, который вы ожидаете. –