2014-04-01 3 views
1

XML에서 Java 구문 분석으로 작업 중입니다. 나는 이와 비슷한 시나리오를 가지고있다.속성 값을 기준으로 xml을 다른 멤버로 구문 분석

속성 값을 기반으로 XML을 Java로 구문 분석해야합니다.

나는 한 멤버와 다른 멤버의 속성 PERMANENT="N"와 속성 PERMANENT="Y" 모든 직원 요소를 구문 분석 할 필요가있다.

<EMPLOYEE PERMANENT="Y"> 
    <DETAILS NAME="AA" ID="1" AGE="28" /> 
    <DETAILS NAME="BB" ID="2" AGE="29" /> 
</EMPLOYEE> 
<EMPLOYEE PERMANENT="N"> 
    <DETAILS NAME="CC" ID="3" AGE="28" /> 
    <DETAILS NAME="DD" ID="4" AGE="29" /> 
</EMPLOYEE> 

자바

public class Employee 
{ 

    // @XStreamAlias("EMPLOYEE") and attribute PERMANENT="Y" 
    private Details permanentEmployee; 

    // @XStreamAlias("EMPLOYEE") and attribute PERMANENT="N" 
    private Details tempEmployee; 

} 

나는이 작업을 수행하는 방법에 없습니다 확신합니다.

나를 도와 줄 수 있습니까? 이것은 노드 목록을 반환

import javax.xml.xpath.XPath; 
import javax.xml.xpath.XPathFactory; 
//... 

XPath xPath = XPathFactory.newInstance().newXPath(); 
String expression = "/documentBody/EMPLOYEE[@PERMANENT="Y"]/DETAILS" 
NodeList nodeList = (NodeList) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODESET); 

당신이 다음 반복해야합니다

답변

1

당신은 다음과 같이 보일 것이다 노드를 "세부 사항"을 선택하여 java xml api

XPath 식은를 사용하여 수행 할 수 있습니다 각 DETAILS 노드마다 하나의 직원을 설명한다고 가정합니다.

+0

감사합니다. xstreamAlias를 사용하여이를 수행하는 방법을 도와 줄 수 있습니까? – Patan

+0

@Patan XStream은 Java 용 xml 직렬화 라이브러리입니다. XStreamAlias ​​주석을 사용하여이 작업을 수행 할 수 있는지 의심 스럽습니다.이 주석은 클래스 또는 필드 xml 별칭을 정의하기위한 것입니다. 모든 Employee 요소를 구문 분석하도록 요청합니다 ... XStream 라이브러리를 사용하여 직렬화 된 경우 .fromXML() 메소드를 사용할 수 있어야합니다. XStream을 사용하여 직렬화되지 않은 경우이 라이브러리를 사용하는 지점이 실제로 표시되지 않습니다. 주된 용도는 XML 직렬화입니다. Java는 이미 XPath 쿼리를위한 우수한 API를 제공합니다. – rpg711