2012-05-02 37 views
0

我有xml文件如何使用java读取xml中的替代标签?

<A> 
    <A1> 
     <A2>Hi</A2> 
    </A1> 
<A> 
<B> 
    <B1></B1> 
    <B2>100</B2> 
</B> 
<A> 
    <A1> 
     <A2>Hello</A2> 
    </A1> 
<A> 
<B> 
    <B1>1000</B1> 
    <B2></B2> 
</B> 

同样是本去10个多块。现在我的java代码能够逐个阅读,然后读取标签。

代码:

public class XMLParse { 
    static Document doc; 
public static void main(String argv[]) { 
    try { 
    File file = new File("/home/dev042/Desktop/xxx.xml"); 
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder db = dbf.newDocumentBuilder(); 
    doc = db.parse(file); 
    doc.getDocumentElement().normalize(); 
    System.out.println("Root element " + doc.getDocumentElement().getNodeName()); 
    NodeList nodeLst = doc.getElementsByTagName("A"); 
    System.out.println("Information of all Balence Sheet"); 
int count = nodeLst.getLength(); 
String name; 
    for (int s = 0; s < nodeLst.getLength(); s++) { 

    Node fstNode = nodeLst.item(s); 

    if (fstNode.getNodeType() == Node.ELEMENT_NODE) { 
     Element fstElmnt = (Element) fstNode; 
     NodeList fstNmElmntLst = fstElmnt.getElementsByTagName("A1"); 
     for(int i =0; i < fstNmElmntLst.getLength(); i++) 
     { 
      Node lst = fstNmElmntLst.item(i); 
      if(lst.getNodeType() == Node.ELEMENT_NODE) 
      { 
       Element fsttravel = (Element) lst; 
       NodeList secNmElt = fsttravel.getElementsByTagName("*"); 
       name = secNmElt.item(0).getTextContent(); 
       System.out.println("Name : " + name); 
      } 
     } 
    } 

    } 
} 
    catch (Exception e) { 
    e.printStackTrace(); 
    } 
    String amt; 
    double amount; 
    NodeList nodeLst = doc.getElementsByTagName("B"); 
    int coun = nodeLst.getLength(); 
    for (int s = 0; s < nodeLst.getLength(); s++) { 
     Node secNode = nodeLst.item(s); 

    if (secNode.getNodeType() == Node.ELEMENT_NODE) { 
     try 
       { 
       Element amtval = (Element) secNode; 
       NodeList secval = amtval.getElementsByTagName("B1"); 
       amt = secval.item(0).getTextContent(); 
       //amount = Double.parseDouble(amt); 
       System.out.println("SubAmt :" + amt); 

       NodeList lstNmElmntLst = amtval.getElementsByTagName("B2"); 
       amt = lstNmElmntLst.item(0).getTextContent(); 
       System.out.println("MainAmt : " +amt); 
       } 
       catch(Exception ex){ 
        ex.printStackTrace(); 
      } 
    } 
    } 

} 
} 

电流输出:

Hi 
Hello 
100 
1000 

我想或者读取标签。那么只有我能够映射这些值。我如何阅读这些标签的选择。输出应该是这样的

Hi 100 
Hello 1000 

请帮我解决它。 在此先感谢..

+0

请张贴你当前的代码。你如何解析XML? –

+0

使用DOM解析器代替SAX解析器 – AurA

+0

我不知道那个..请问您能否详细解释.. – Dhinakar

回答