티스토리 뷰

xpath를 사용하면 원하는 태그의 value만 추출하기가 수월한데, 서칭결과 내 로컬에 있는 xml 파일들만으로 예제가 나와있었다.

나의 경우는 외부 url에서 xml 파싱해와서 거기서 원하는 태그의 값만 뽑아오고 싶었던 상황.


[전체흐름]

외부 url xml 파싱 -> 파싱결과를 readLine을 통해 전체 xml을 String으로 형변환 -> 해당 String을 xpath를 통해 원하는 값만 추출



외부 url로 얻어온 xml

<user>

<name>홍길동</name>

<age>20</age>

<job>programmer</job>

<gender>female</gender>

</user>




java import 경로

import javax.xml.xpath.XPath;

import javax.xml.xpath.XPathConstants;

import javax.xml.xpath.XPathFactory;




java 코드

URL obj = new URL("호출할 url"); 

HttpURLConnection con = (HttpURLConnection)obj.openConnection();


con.setDoOutput(true);

con.setRequestMethod("GET");


BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));

String line;

String resultLine = "";

while((line = in.readLine()) != null)

{

resultLine += line; 

}


in.close();

            

Document xml = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new ByteArrayInputStream(resultLine.getBytes()));

xml.getDocumentElement().normalize();

            

XPath xpath = XPathFactory.newInstance().newXPath();

Node userName= (Node) xpath.evaluate("//user/name", xml, XPathConstants.NODE);

Node userAge= (Node) xpath.evaluate("//user/age", xml, XPathConstants.NODE);


System.out.println("유저이름 : " + userName.getTextContent + " / 유저나이 : " + userAge.getTextContent);



** 만약 getTextContent() 에서 The method getTextContent() is undefined for the type Node 서 에러가 나오면, 이클립스 properties > Java Build Path에서 Web App Libraries의 위치를 JRE보다 아래로만 내리면됨)



*** xml 태그가 예시와 다른 경우에는 서칭하면 잘 나와있어서 별도로 작성하진 않았음



댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함