xml 파싱에 관한 질문입니다.
조회수 1773회
<a>
<b>123213</b>
<c>
<c1>a</c1>
<c2>b</c2>
</c>
<d>123123</d>
</a>
현재 자바의 xpath를 이용해서 xml파일의 노드들을 파싱할려 하는데요 (javax.xml.xpath.XPath)
a노드 하위의 b,c,d들을 순회할 수 있도록 node나 nodelist 가져올 수 없는건가요?
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
XPath xpath = XPathFactory.newInstance().newXPath(); NodeList nl = (NodeList)xpath.evaluate("//a/*", document, XPathConstant.NODESET); for(int i=0;i<nl.getLength();i++) { Element e = (Element)nl.getItem(i); }
위와 같은 방식으로 하면 될 것 같습니다.
xpath.evaluate
에서 첫번째는 XPATH 식을 써주고,document
는 XML DOM 문서를- 마지막 인자에 return type을 명시해주면 되는데, xpath식에 의해 얻는 것이
node집합
임으로XPathConstant.NODESET
으로 지정해주면 됩니다.
그리고 XPathConstant.NODESET일 경우 return type은 NodeList으로 형변환해서 사용하면됩니다.
위의
//a/*
Xpath 식은모든 a의 하위 노드
라는 의미이빈다.
댓글 입력