Android中简单的XML解析

3

我的 XML 如下所示:

<.sUID>yPkmfG3caT6cxexj5oWy34WiUUjj8WliWit45IzFVSOt6gymAOUA==<./sUID>
<.Shipping>0.00<./Shipping>
<.DocType>SO<./DocType>

我该如何在Android中解析这个简单的xml?


请阅读此文章以了解简单的XML解析。 - Shashank_Itmaster
你查过谷歌吗?因为现在有很多使用DOM解析器、SAX解析器、Pull解析器和其他解析技术的XML解析示例可用。 - Paresh Mayani
XML必须有一个包装内容的父级元素。例如:<XML>在此处输入您的XML</XML>。 - Mark Mooibroek
2个回答

5
创建文档:
public Document XMLfromString(String v){

        Document doc = null;

        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        try {

            DocumentBuilder db = dbf.newDocumentBuilder();

            InputSource is = new InputSource();
            is.setCharacterStream(new StringReader(v));
            doc = db.parse(is); 

        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch (SAXException e) {
            System.out.println("Wrong XML file structure: " + e.getMessage());
            return null;
        } catch (IOException e) {
            e.printStackTrace();
        }

        return doc;

    }

然后像这样阅读:

Document doc = x.XMLfromString("<XML><sUID>yPkmfG3caT6cxexj5oWy34WiUUjj8WliWit45IzFVSOt6gymAOUA==</sUID> <Shipping>0.00</Shipping> <DocType>SO</DocType></XML>");

NodeList nodes = doc.getElementsByTagName("XML");

1

使用默认的拉取式XML解析器很繁琐和容易出错,因为API过于底层。建议使用Konsume-XML

data class Shipment(val uid: String, val shipping: BigDecimal, val docType: String) {
    companion object {
        fun xml(k: Konsumer): Shipment {
            k.checkCurrent("Shipment")
            return Shipment(k.childText("sUID"),
                    k.childText("Shipping") { it.toBigDecimal() },
                    k.childText("DocType"))
        }
    }
}

val shipment = """
<Shipment>
    <sUID>yPkmfG3caT6cxexj5oWy34WiUUjj8WliWit45IzFVSOt6gymAOUA==</sUID>
    <Shipping>0.00</Shipping>
    <DocType>SO</DocType>
</Shipment>
""".trimIndent().konsumeXml().child("Shipment") { Shipment.xml(this) }
println(shipment)

将打印 Shipment(uid=yPkmfG3caT6cxexj5oWy34WiUUjj8WliWit45IzFVSOt6gymAOUA==, shipping=0.00, docType=SO)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接