java - 解析包含超链接的 xml 字符串

标签 java android xml parsing xml-parsing

我正在使用 DOM 来解析 XML 字符串,如下例所示。除了在一种情况下,这很好用。我试图解析的文档如下所示:

<response requestID=\"1234\">
    <expectedValue>Alarm</expectedValue>
    <recommendations>For steps on how to resolve visit <a href=\"some website\">Website</a> and use the search features for \"Alarm\"<recommendations>
    <setting>Active</setting>
<response>

我用来解析XML的代码如下:

try {   
        DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
        InputSource is = new InputSource();
        is.setCharacterStream(new StringReader(xmlResult));

        Document doc = db.parse(is);
        NodeList nlResponse = doc.getElementsByTagName("response");

        String[] String = new String[3];  //result entries

        for (int i = 0; i < nlResponse.getLength(); i++) {
            Element e = (Element) nlResponse.item(i);
            int c1 = 0; //count for string array

            NodeList ev = e.getElementsByTagName("expectedValue");
            Element line = (Element) ev.item(0);
            String[c1] = (getCharacterDataFromElement(line));
            c1++;

            NodeList rec = e.getElementsByTagName("recommendations");
            line = (Element) rec.item(0);
            String[c1] = (getCharacterDataFromElement(line));
            c1++;

            NodeList set = e.getElementsByTagName("settings");
            line = (Element) set.item(0);
            String[c1] = (getCharacterDataFromElement(line));
            c1++;  

我能够解析代码并将结果放入字符串数组(与 System.out.println() 相反)。使用当前代码,我的字符串数组如下所示:

String[0] = "Alarm"
String[1] = "For steps on how to resolve visit"
String[2] = "Active"

我想要某种方式能够读取“建议”中的其余信息,以便最终在 TextView 中显示超链接(以及其他输出)。我该怎么做?

最佳答案

对于我之前假设您的 xml 格式错误的回答,我深表歉意。

我认为正在发生的事情是,您对 getCharacterDataFromElement 的调用仅查看文本的第一个子节点,而此时它需要查看所有子节点并获取 href 属性以及第二个子节点的文本查看推荐节点时的子节点。

例如得到推荐元素后

            String srec = "";
            NodeList nl = line.getChildNodes();
            srec += nl.item(0).getTextContent();

            Node n = nl.item(1);
            NamedNodeMap nm = n.getAttributes();
            srec += "<a href=\"" + nm.getNamedItem("href").getTextContent() +  "\">" + n.getTextContent() + "</a>";

            srec += nl.item(2).getTextContent();

            String[c1] = srec; 

关于java - 解析包含超链接的 xml 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7097335/

相关文章:

java - 如何在java中使用printdialog导出多行文本?

java - 从 Java 连接到 OLEDB 数据源?

android - ScrollView 中的 ListView

java - 图像滑动 View

java - Android - 编辑操作栏按钮文本

android - 如何将复选框动态添加到 Android 布局?

java - 如何清除 JSON 数组中的数据

java - 使 netbeans 在编译时跳过 java 类文件。

java - 将 Android ListView 行高设置为最大行

java - 强制 Spring RestTemplate 使用 XmlConverter