利用W3C DOM处理XML文档

步骤简介:
1、利用DocumentBuilderFactory获得DocumentBuilder:
<!----> DocumentBuilder docBuilder  =  DocumentBuilderFactory.newInstance().newDocumentBuilder() ;

2、由DocumentBuilder解析得到Document:
<!----> 1  Document document  =  docBuilder.parse( new  ByteArrayInputStream(xmlStr.getBytes()));
2  // Document document = docBuilder.parse(new FileInputStream(new File("fileName")));
3  // Document document = docBuilder.parse(new File("fileName"));
4  // Document document = docBuilder.parse("uri");

3、由Document获取页面内容:
3.1、由Document得到特定元素:
<!----> 1  Element element  =  document.getElementById( " elementId " );
2  String attrValue  =  element. getAttribute( " attrName " );

3.2、由Document得到节点集合:
<!----> 1  NodeList nodeList  =  document.getElementsByTagName( " tagName " );
2  for ( int  i  =   0 ; i  <  nodeList.getLength(); i ++ ){
3     String nodeValue  =  nodeList.item(i).getFirstChild().getNodeValue();
4  }
下面是一个实际应用的简单例子:
<!---->  1  import  java.io.BufferedReader;
 2  import  java.io.ByteArrayInputStream;
 3  import  java.io.IOException;
 4 
 5  import  javax.servlet.ServletException;
 6  import  javax.servlet.http.HttpServlet;
 7  import  javax.servlet.http.HttpServletRequest;
 8  import  javax.servlet.http.HttpServletResponse;
 9  import  javax.xml.parsers.DocumentBuilderFactory;
10  import  javax.xml.parsers.ParserConfigurationException;
11 
12  import  org.w3c.dom.Document;
13  import  org.w3c.dom.NodeList;
14  import  org.xml.sax.SAXException;
15 
16  public   class  PostingXmlExample  extends  HttpServlet{
17      
18       public   void  doPost(HttpServletRequest request, HttpServletResponse response)
19           throws  IOException, ServletException {
20          String xml  =  readXmlFromRequestBody(request);
21          Document xmlDoc  =   null ;
22           try  {
23              xmlDoc  =  DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(
24                       new  ByteArrayInputStream(xml.getBytes()));
25          }  catch  (SAXException e) {
26              System.out.println( " SAXException! " );
27              e.printStackTrace();
28          }  catch  (ParserConfigurationException e) {
29              System.out.println( " ParserConfigurationException! " );
30              e.printStackTrace();
31          }
32          NodeList selectedPetTypes  =  xmlDoc.getElementsByTagName( " type " );
33          String type  =   null ;
34          String responseText  =   " Selected Pets:  " ;
35           for ( int  i  =   0 ; i  <  selectedPetTypes.getLength(); i ++ ){
36              type  =  selectedPetTypes.item(i).getFirstChild().getNodeValue();
37              responseText  =  responseText  +   "   "   +  type;
38          }
39          response.setContentType( " text/xml " );
40          response.getWriter().print(responseText);        
41      }
42 
43       private  String readXmlFromRequestBody(HttpServletRequest request) {
44          StringBuffer xml  =   new  StringBuffer();
45          String line  =   null ;
46           try {
47              BufferedReader reader  =  request.getReader();
48               while ((line  =  reader.readLine())  !=   null ){
49                  xml.append(line);
50              }
51          } catch (IOException e){
52              System.out.println( " IOException! " );
53              e.printStackTrace();
54          }
55           return  xml.toString();
56      }
57  }
[ 这里]是完整的实例程序。

你可能感兴趣的:(xml,servlet)