日期:2014-05-20  浏览次数:20711 次

xml读取同名节点问题 请各位大侠帮忙
xml :
  <?xml version="1.0" encoding="gb2312" ?> 
<list>
<Total>
  <results>3</results> 
  </Total>
<list>
 <tab>
  <a>1</a>
  <b>2</b>
  <c>3</c>
</tab>
 <tab>
  <a>4</a>
  <b>5</b>
  <c>6</c>
</tab>
</list>
<list>
 <tab_ab>
  <a>1</a>
  <b>2</b>
  <d>3</d>
</tab_ab>
 <tab_ab>
  <a>4</a>
  <b>5</b>
  <d>6</d>
</tab_ab>
</list>

</list>

java代码:
  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
DocumentBuilder db = dbf.newDocumentBuilder(); 
Document document = db.parse(new File("a.xml")); 
NodeList list = document.getElementsByTagName("tab");
NodeList listscpc = document.getElementsByTagName("tab_ab");
  for(int i=0;i<list.getLength();i++)
{

B b= new B();
b.setA(document.getElementsByTagName("a").item(i).getFirstChild().getNodeValue());
  b.setB(document.getElementsByTagName("b").item(i).getFirstChild().getNodeValue());
  b.setC(document.getElementsByTagName("c").item(i).getFirstChild().getNodeValue());


}

for(int i=0;i<listscpc.getLength();i++)
{

A a= new A();
a.setA(document.getElementsByTagName("a").item(i).getFirstChild().getNodeValue());
  a.setB(document.getElementsByTagName("b").item(i).getFirstChild().getNodeValue());
  a.setD(document.getElementsByTagName("d").item(i).getFirstChild().getNodeValue());


}
问题:
第二个循环会读到第一个循环中去,现在就是不知道怎么指点到节点下面去读,例如:list 只读取tab下面的,请各位赐教

------解决方案--------------------
File f = new File("F:\\a.xml");
DocumentBuilder db = dbf.newDocumentBuilder();
document = db.parse(f);
Element root = document.getDocumentElement();
NodeList nl = root.getElementsByTagName("tab_ab");
for(int i=0; i<nl.getLength(); i++){
Element e = (Element) nl.item(i);
System.out.println(e.getTextContent());
}