Android通过xml解析

时间:2017-05-29 13:55:35

标签: android xml

这个XML我必须从中获取某些信息,格式为:

<Tag1
    name="something"
    target="something">
    <param name="url">Some url</param>
    <param name="tag">Some tag</param>
</Tag1>

问题是我必须首先检查param name =“url”中是否包含“some url”(因为某些xml条目可能不包含它),如果有,则获取Tag1名称,是否有任何建议?

编辑:

当我发布问题时不在办公室,这里是我正在使用的代码(也是,能够获取param name =“url”中的URL)

InputStream inputStream = getActivity().getAssets().open("some_xml.xml");
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = builderFactory.newDocumentBuilder();
Document document = builder.parse(inputStream);
Element element = document.getDocumentElement();
element.normalize();
NodeList nodeList = document.getElementsByTagName("Tag1");
for (int i = 0; i < nodeList.getLength(); i++) {
    Node node = nodeList.item(i);
    if (node.getNodeType() == Node.ELEMENT_NODE) {
        Element element2 = (Element) node;
        if (element2.getElementsByTagName("param") != null){
            NodeList innerNodes = element2.getElementsByTagName("param");
            for (int j = 0; j < innerNodes.getLength(); j++){
                Element element3 = (Element) innerNodes.item(j);
                Log.d("XMLNode", element3.getNodeName());
                Node child = element3.getFirstChild();
                if (child instanceof CharacterData) {
                    CharacterData characterData = (CharacterData) child;
                    Log.d("XMLURL", characterData.getData());
                }
            }
        }
    }
}

现在的问题是,当xml条目有param name =“url”和param name =“tag”时,我将同时返回URL和Tag,并且只需要捕获URL(有时param name =“标签“在param name =”url“之上,我尝试使用

if (element3.getAttribute("Url") != null

指定它应该只捕获url但显然它没有做任何事情,因为它在param name =“tag”比较中进行。有什么建议吗?提前谢谢。

1 个答案:

答案 0 :(得分:0)

您可以使用此GSON XML解析器库来转换xml响应。

https://github.com/stanfy/gson-xml

我使用Retrofit进行API命中,并使用自动解析进行建模。

结帐处:https://futurestud.io/tutorials/retrofit-how-to-integrate-xml-converter