【发布时间】:2015-12-12 00:49:11
【问题描述】:
我是 Java 新手。 想要一些建议。 所以,我正在解析 Xml 文件中的数据,并将其添加到 hashMap。 请看一段代码:
final HashMap<String,String> urls = new HashMap<String,String>();
File products = new File("D:/eclipse/workspace/test/src/main/resources/Products.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder;
dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(products);
doc.getDocumentElement().normalize();
NodeList nList = doc.getElementsByTagName("Row");
for (int z=0; z<nList.getLength(); z++) {
Node nNode = nList.item(z);
Element eElement = (Element) nNode;
NodeList a = eElement.getElementsByTagName("item");
for (int i=0; i<a.getLength(); i++) {
String b = eElement.getElementsByTagName("item").item(i).getTextContent();
String c = eElement.getElementsByTagName("url").item(i).getTextContent();
urls.put(b, c);
System.out.println(urls);
}
}
这是我在控制台中 println 后的 hashMap 输出:
{Select product=bla-bla-bla}
{Single Landmine Shirt=http://www.sample.com/landmine-single-shirt, Select product=bla-bla-bla}
{Women's Silver & Black Bar=http://www.sample.com/womens-silver-and-black-bar, Single Landmine Shirt=http://www.sample.com/landmine-single-shirt, Select product=bla-bla-bla}
如您所见,我在 for-cycle 的每次下一次迭代中都有一组渐进式项目:(。但我真正需要的只是 key(item tag)=value(url 标记)对。"item" 和 "url" - 是我的 XML 中的标记(请参阅附件)。
我想要这样的输出(只有一个键和一个对应的值):
{Select product=bla-bla-bla}
{Single Landmine Shirt=http://www.sample.com/landmine-single-shirt}
{Women's Silver & Black Bar=http://www.sample.com/womens-silver-and-black-bar}
{High Density Foam Rollers=http://www.sample.com/high-density-foam-rollers}
【问题讨论】:
-
1)
System.out.println("{" + b + "=" + c + "}");--- 或者 2) 将println()方法移到循环外。 -
调用
normalize()不会影响结果,所以是对CPU周期的浪费。getTextContent()将在需要时合并文本内容。 -
@Andreas,谢谢。由于我需要在 hashMap 中存储值并进一步使用它,因此您的建议 2) 似乎适合这里。我很感激你的回答。
标签: java xml xml-parsing hashmap