android - 将 XML 字符串解析为 kXML 元素

标签 android android-ksoap2 kxml2 kxml

我正在编写一个使用 kSOAP2 连接到 SOAP 网络服务的 Android 应用程序,并且我有一个 kXML 元素,我想根据从其他地方(一个 REST API)获得的 XML 字符串注入(inject)一个子元素。我有以下代码:

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 字符串构建我的元素。

最佳答案

这是我们最终实现的解决方案:

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);
}

我们仍在验证它是否产生了正确的结果,但它似乎有效。

关于android - 将 XML 字符串解析为 kXML 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50038299/

相关文章:

android - 如何在 android 中使用 Ksoap2 将 json 数组作为参数传递给 Web 服务

java - Kxml2 如何将xml转换为wbxml?

android:何时使用 onStart()、onStop()?

android - 为 greenDao 和改造创建通用数据模型

android - 优化 Google 移动广告在 Flutter 上的初始化和加载

java - Android - 无法转换 org.ksoap2.soapfault

java - 应用程序在设备/模拟器中运行时崩溃

android - XML 解析不适​​用于 lwuit 应用程序的 android 构建

Android 6 EditText.setError 无法正常工作