日期:2014-05-17  浏览次数:20665 次

java xml解析 问题
<root>
  <tb1>
  <Area>东城区 </Area>
  <Area>西城区</Area>
  <Area>崇文区</Area>
  <Area>宣武区</Area>
  <Area>朝阳区</Area>
  </tb1>
  <tb2>
  <Area>和平区</Area>
  <Area>河东区</Area>
  <Area>河西区</Area>
  <Area>南开区</Area>
  <Area>河北区</Area>
  <Area>红桥区</Area>
  </tb2>
</root>
xml如上所示 想通过节点<tb1>解析<tb1>下的所有<Area>的值,求方法。。。。

------解决方案--------------------
xml:
Java code
<?xml version="1.0" encoding="UTF-8"?>
<root>
  <tb1>
      <Area>东城区 </Area>
      <Area>西城区</Area>
      <Area>崇文区</Area>
      <Area>宣武区</Area>
      <Area>朝阳区</Area>
  </tb1>
  <tb2>
      <Area>和平区</Area>
      <Area>河东区</Area>
      <Area>河西区</Area>
      <Area>南开区</Area>
      <Area>河北区</Area>
      <Area>红桥区</Area>
  </tb2>
</root>

------解决方案--------------------

关于xml数据的解析,如果数据太大那就会很麻烦。。不过如果只是几M的话还是没问题的。。不说了。。说一下,关于你的问题。。

//存放每一个节点中获取的数据 
 private Map map=new Map();
  
 File f=new File("市区.xml");
//定义工厂 API,使应用程序能够从 XML 文档获取生成 DOM 对象树的解析器
 DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
//定义 API, 使其从 XML 文档获取 DOM 文档实例。使用此类,应用程序员可以从 XML 获取一个 Document doc。
 DocumentBuilder builder=factory.newDocumentBuilder();
 Document doc = builder.parse(f);
 
//按文档顺序返回包含在文档中且具有给定标记名称的所有 Element 的 NodeList
NodeList nl = doc.getElementsByTagName("tb1");
//遍历每一个nodelist对象 
for (int i=0;i<nl.getLength();i++){
//主要为了获取节点数量
NodeList n2 = doc.getElementsByTagName("Area");
//存放一个节点中的所有数据
ArrayList<String> a=new ArrayList<String>();
for (int j=0;j<n2.getLength();j++)
{
a.add(doc.getElementsByTagName("tb1").item(j).getFirstChild().getNodeValue());
}

map.add(a);
   }
}catch(Exception e){
 e.printStackTrace();
}