如何在单个文档上阅读更多属性值。
这是xml示例xml文件:
<Categories>
<Category name="Title 1"
<SubCategory>
<subcategory title="subtitle 1" id="1" ></subcategory>
<subcategory title="subtitle 2" id="2" ></subcategory>
<subcategory title="subtitle 3" id="3" ></subcategory>
</SubCategory>
</Category>
<Category>
<Category name="Title 2"
<SubCategory>
<subcategory title="subtitle 4" id="4" ></subcategory>
<subcategory title="subtitle 5" id="5" ></subcategory>
<subcategory title="subtitle 6" id="6" ></subcategory>
</SubCategory>
</Category>
</Categories>
这里我必须显示类别名称和子类别title.i使用下面的代码,我必须运行应用程序,这意味着我得到类别名称但我没有得到子类别标题名称..如何可以我得到子类别标题名称...请给我任何想法..
我宣布了
static String KEY_CATEGORY = "Categories";
static final String KEY_TITLE = "Category";
static final String KEY_ARTICLE = "SubCategory";
之后我必须创建节点列表并标记类别名称。
NodeList nl = doc.getElementsByTagName(KEY_TITLE);
NodeList nl1 = doc.getElementsByTagName(KEY_ARTICLE);
还要在地图上添加所有类别名称。因此我使用了循环;
for (int i = 0; i < nl.getLength(); i++) {
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
map.put( KEY_TITLE,(e.getAttribute("name")));
for (int j = 0; j < nl1.getLength(); j++) {
map.put( KEY_ARTICLE,((Element)nl1.item(i)).getAttribute("title"));
}
songsList.add(map);
}
}
这里有获取类别名称...但我无法获得所有子类别标题名称...我只得到前2个子类别标题名称...我的代码中有什么错...我用过循环for for循环。第一个循环获取类别名称,第二个循环获取子类别标题...总类别是2 ...但是子类别是6 ...那我只得到2个子类别标题我的意思它取决于总类别数...如果是的话我怎样才能获得所有子类别标题????请给我解决方案获取所有子类别标题名称...给我任何想法???
答案 0 :(得分:0)
我认为您可以使用AXIOM轻松完成此操作
参考:http://ws.apache.org/axiom/userguide/userguide.html
例如:
XMLStreamReader parser = XMLInputFactory.newInstance().createXMLStreamReader(new StringBufferInputStream(responseXML));
OMElement documentElement = new StAXOMBuilder(parser).getDocumentElement();
AXIOMXPath oTA_HotelAvailRSXPath = new AXIOMXPath("/soap:Envelope/soap:Body/wmHotelAvailResponse/OTA_HotelAvailRS");
oTA_HotelAvailRSXPath.addNamespace("soap", "http://schemas.xmlsoap.org/soap/envelope/");
oTA_HotelAvailRSXPath.addNamespace("xsi", "http://www.w3.org/2001/XMLSchema-instance");
oTA_HotelAvailRSXPath.addNamespace("xsd", "http://www.w3.org/2001/XMLSchema");
OMElement oTA_HotelAvailRSOmElement = (OMElement)oTA_HotelAvailRSXPath.selectSingleNode(documentElement);
OMElement errorsOmElement = (OMElement)new AXIOMXPath("Errors").selectSingleNode(oTA_HotelAvailRSOmElement);
String strType = (String) new AXIOMXPath("string(Text/@Type)").selectSingleNode(errorsOmElement);
String strCode = (String) new AXIOMXPath("string(Text/@Code)").selectSingleNode(errorsOmElement);
String strDescription = (String) new AXIOMXPath("string(Text)").selectSingleNode(errorsOmElement);
答案 1 :(得分:0)
我终于发现你正在使用android.sax
包来解析你的XML文件。我想你需要查看Element
类的文档。你可以在那里找到一个方法,它将为你提供当前元素的子节点(子节点)。
您还应该查看android.sax
包中可用的其他类和接口。特别是,Listener接口将有助于您遍历XML文件的解析树。