2010-02-15 4 views
3

나는 결코 XML을 좋아하지 않았고 항상 그것을 피하려고했습니다. 마침내 그 날이 왔습니다.또 다른 Java XML 라이브러리 질문

XML을 구문 분석 할 때 정말 힘들었습니다. DOM 파서를 사용하여 NodegetChildNodes()을 호출하면 NodeList을 반환했습니다. XPath를 사용하면서 캐스팅을 사용해야했습니다.

getChildNodes() 반환 List<Node> (또는 컬렉션,의 Iterable 등), 내가 말해 casting.In 할 필요가 없습니다이하는 XML 파서가 WebDriver의 WebElement 메커니즘과 유사하다 자바 XML 파싱 라이브러리가있는 곳입니다 우아하고 단순한 도서관.

라이브러리는 읽기 전용 일 수 있습니다. 조작 할 필요가 없습니다.

답변

0

dom4j 제네릭을 사용하여 시작하고 버전 2.0 컬렉션.

설명서는 2.0에는 좋지 않지만 이전 문서는 잘 작동합니다.

2

정말 XML을 사용하는 대상에 따라 다릅니다. 예를 들어, 프로젝트에서 필자는 애플리케이션의 백엔드 기능을 작성했습니다. 우리는 웹 서비스와 SOAP를 통해 메시지를 보내고 받았다. 이것을 설정할 때 나는 Spring-WS와 JAXB 어노테이션을 사용했다. 이 때문에 자동으로 SOAP XML을 백엔드로오고가는 Java 객체로 변환했습니다. 이것은 나머지 팀이 개념적으로 무슨 일이 진행되고 있는지를 알기는하지만 디버깅 목적으로 보려는 것이 아니라면 실제 SOAP 요청으로부터 격리되어 있다는 것을 의미했습니다. 우리의 코드 중 어느 것도 JAXB를 통해 생성 된 객체만을 사용하여 XML을 직접 처리하지 않았습니다.

의미가 있습니까?

0

JAXB도 사용합니다. 그러나 XML과 관련된 스키마가 있거나이를 만들 수있는 경우 jaxb 컴파일러 xjc를 사용하여 XML 구조를 나타내는 Java 클래스를 작성할 수 있습니다. 그러면 XML을 쉽게 파싱하고 탐색 할 수 있습니다. 이는 코드에 주석이 없기 때문에 위의 방법에 대한 대안입니다.

3

훨씬 유용한 API 인 JDOM을 조사 할 것입니다.

Element.getChildren()Element 개체의 목록을 반환합니다 (불행히도 이 아니지만 API는 분명 함).

dom4j이 또 다른 대안입니다 (다시 말하면, 일반화되지 않았습니다).

0

앞서 언급했듯이 실제로 의도하는 바에 따라 다릅니다.

Java bean으로 XML 스키마를 맵핑하고 XML 파일을 이러한 bean의 인스턴스로 자동 구문 분석하려면 JAXB, XMLBeans을 사용할 수 있습니다.

간단한 XML 파일을 구문 분석하고 즉시 작업하려는 경우 DOM 및 SAX 대신 JDOM을 사용할 수 있습니다. 그것은 당신에게 요소의 List를 검색 할 수있는 기능을 제공

는 :

Iterator itr = (currentElement.getChildren()).iterator(); 
    while(itr.hasNext()) { 
    Element oneLevelDeep = (Element)itr.next(); 
    List twoLevelsDeep = oneLevelDeep.getChildren(); 
    // Do something with these children 
    } 
0

당신은 JDK 포함 된 DOM의 API보다 사용하기 위해 JDOM API 더 직관적이고 간단하게 찾을 수 있습니다. 불행히도 API는 반환 된 컬렉션/목록에 제네릭을 사용하지 않으므로 반환 값에 대해 일부 캐스팅을 수행해야합니다.