Разбор строки XML в элемент kXML - PullRequest
0 голосов
/ 26 апреля 2018

Я пишу приложение для Android, которое подключается к веб-сервису SOAP с использованием kSOAP2, и у меня есть элемент kXML, в который я хотел бы внедрить дочерний элемент на основе строки XML, полученной из других источников (API REST).У меня есть следующий код:

Element samlHeader = new Element().createElement("http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd", "Security");
samlHeader.setPrefix("wsse", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd");
samlHeader.setPrefix("wsu", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd");

String samlTokenString = ...; //I got this from elsewhere
Element samlTokenElement = ...; //I don't know how to build this
samlHeader.addChild(Node.ELEMENT, samlTokenElement);

Итак, я пытаюсь выяснить, как построить свой элемент на основе строки XML, которую я получаю из других источников.

1 Ответ

0 голосов
/ 04 мая 2018

Это решение, которое мы в итоге реализовали:

try {
    KXmlParser parser = new KXmlParser();
    parser.setInput(new StringReader(samlTokenString));
    parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true);

    Document samlTokenDocument = new Document();
    samlTokenDocument.parse(parser);
    samlHeader.addChild(Node.ELEMENT, samlTokenDocument.getRootElement());
} catch (XmlPullParserException e) {
    Log.e(TAG,"Could not parse SAML assertion", e);
} catch (IOException e) {
    Log.e(TAG,"Could not parse SAML assertion", e);
}

Мы все еще проверяем, дает ли он правильный результат, но, похоже, он работает.

...