자바 해석 및 생 성 xml 원리 인 스 턴 스 상세 설명

XML 해석:
  • *xml 분석 가능:
  • *xml 를 설정 파일 로 사용 하면 읽 기
  • *xml 를 전송 파일 로 한다 면:쓰기,읽 기
  • xml 해석 사상:
  • *DOM:문 서 를 메모리 에 불 러 와 dom 트 리(document 대상)를 만 들 고 문서 의 각 구성 부분 을 대상 으로 밀봉 합 니 다.
  • *장점:메모리 에 dom 트 리 가 형성 되 기 때문에 dom 트 리 를 추가 삭제 하고 수정 할 수 있 습 니 다.
  • *단점:dom 트 리 는 메모 리 를 매우 차지 하고 해석 속도 가 느리다.
  • Document
    Element
    Text
    Attribute
    Comment
    *SAX:한 줄 씩 읽 기,이벤트 기반 드라이브
    *장점:메모 리 를 차지 하지 않 고 속도 가 빠르다
    *단점:읽 기만 가능 하고 다시 쓸 수 없 음
    xml 상용 해상도 기:
  • *JAXP:sun 회사 가 제공 한 분석.dom 과 sax 를 지원 합 니 다.자주 사용 하지 않 음)
  • * JDOM:
  • *DOM4J:dom for java 민간 방식 이지 만 사실 방식 입 니 다.아주 좋아요.지지 dom
  • 1.jar 패키지 dom4j.jar 가 져 오기
    2.해석 기 만 들 기
    SAXReader reader = new SAXReader();
    3.xml 를 분석 하여 document 대상 획득
    Document document = reader.read(url);
  • *XPATH:검색 전용
  • *규칙 을 정 의 했 습 니 다.
  • *사용 방법:
  • * selectSingleNode():
  • * selectNodes():
  • 사용 절차:
    1.주의:가방 jaxen...jar 안내
    2.해석 기 만 들 기
    SAXReader reader = new SAXReader();
    3.xml 를 분석 하여 document 대상 획득
    Document document = reader.read(url);
    *분석 XML:
    //1.어떤 구체 적 인 노드 내용:두 번 째 책의 제목-해바라기 보전
    //2.모든 요소 노드 를 옮 겨 다 니 기
    XPath:
  • //nodename 이 노드 를 선택 하 십시오.
  • //뿌리 노드 에서 선택 하 십시오.
  • ///선택 한 현재 노드 에서 문서 의 노드 를 선택 하고 위 치 를 고려 하지 않 습 니 다.
  • /..현재 노드 의 부모 노드 를 선택 하 십시오.
  • //@속성 을 선택 하 십시오.
  • //[@속성 명]속성 필터
  • //하위 요소 필터
  • 예:
    
    /* demo.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <books>
      <book name="Harry Potter">
        <author>J.K. Rowling</author>
        <price>29.90$</price>
      </book>
      <book name="     ">
        <author>  </author>
        <price>28.90$</price>
      </book>
    </books>
    */
    @Test
    public void test1() throws DocumentException{
      SAXReader reader = new SAXReader();
      Document doc = reader.read("./src/demo.xml");
      Element root = doc.getRootElement();
      Element book1 = root.element("book");
      System.out.println(book1.getPath());
      System.out.println(book1.elementText("price"));
      List<?> list = root.elements("book");
      Element book2 = (Element) list.get(1);
      System.out.println(book2.attributeValue("name"));
      for(Iterator<?> it = book1.elementIterator();it.hasNext() ; ){
        Element ele = (Element) it.next();
        System.out.println(ele.getName()+" : "+ele.getText());
      }
    }
    
    @Test 
    public void test2() throws Exception{//   XPath,       ,   jaxen...jar 
      SAXReader reader = new SAXReader();
      Document doc = reader.read(new File("src/demo.xml"));
      Node node = doc.selectSingleNode("/books/book[2]/author");//  jaxen.jar 
      String s = node.getText();
      System.out.println(s);
      node = doc.selectSingleNode("/books/book[2]/@name");
      s = node.getText();
      System.out.println(s);
      
      List<Node> booknames = doc.selectNodes("/books//@name");
      for (Node node1 : booknames) {
        System.out.println(node1.getText());
      }
      
      List<?> nodes = doc.selectNodes("/books/*/*");
      for (int i=0; i<nodes.size(); ++i){
        Node node1 = (Node) nodes.get(i);
        System.out.println(node1.getName() + ": " + node1.getText());
      }
    }
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기