这个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”比较中进行。有什么建议吗?提前谢谢。
答案 0 :(得分:0)
您可以使用此GSON XML解析器库来转换xml响应。
https://github.com/stanfy/gson-xml
我使用Retrofit进行API命中,并使用自动解析进行建模。
结帐处:https://futurestud.io/tutorials/retrofit-how-to-integrate-xml-converter