Search

반응형

'Node'에 해당되는 글 2건

  1. 2023.11.06 [JAVA] 자바에서 XML 데이터 다루는 방법. 2탄 Node와 NodeList
  2. 2023.05.21 Node.js 설치하는 방법. nodejs, 노드 with npm도 같이
반응형

이제 XML을 불러오는 방법을 알게 되었으니 파싱을 해서 원하는 Node의 엘리멘트, 속성값 그리고 텍스트 값을 추출하는 방법을 알아보도록 하겠습니다.

 

XML 정보를 가져오는 방법은 3가지가 있다고 했습니다.

1. URL 사이트 정보를 이용하는 방법

2. XML 파일을 읽는 방법

3. String으로 만들어 사용하는 방법

 

이전 포스팅을 보면 위 3가지로 파싱하는 방법을 쉽게 알 수 있습니다.

 

2023.10.14 - [Software/Java] - [JAVA] 자바에서 XML 데이터 다루는 방법. 1탄

 

[JAVA] 자바에서 XML 데이터 다루는 방법. 1탄

안녕하세요. 신기한 연구소입니다. 최근 새로운 개발 요청을 받았답니다. 우후~ 기존 통신 방식을 변경해서 재 구축해야 하는데요. 기존 방식은 자바에서 JSON과 XML을 혼합해서 요청과 응답을 하

tiboy.tistory.com

 

이제 파일을 파싱했다면 원하는 값을 추출해서 사용하는 방법을 알아야겠지요?

아래는 샘플 xml입니다. (sample.xml로 저장하기)

1
2
3
4
5
6
7
8
<?xml version="1.0" encoding="UTF-8"?>
<sample id="idSample">
    <people>
        <name>홍돌이</name>
        <age>25</age>
        <address value="korea">한국</address>
    </people>
</sample>
cs

 

1. 가장 상위 element 가져오기.

 

xml의 가장 최 상위 엘리먼트를 가져오는 방법입니다.

가장 상위를 받아야 그다음 단계의 Node를 받을 수 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    public static void main(String[] args)  throws Exception {
 
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
        DocumentBuilder builder = factory.newDocumentBuilder();        
 
        Document document = builder.parse("./src/sample.xml");
 
       Element element = document.getDocumentElement();  
 
        System.out.println(element.getAttribute("id"));
 
        System.out.println(element.getNodeName());
        
        Node firstNode = element.getFirstChild();
        
        System.out.println("1::" + firstNode.getNodeName());
   }
cs

위 예제를 실행하면 element의 속성 "id"값과 node name을 출력합니다.

idSample
sample
1::#text

마지막 출력값은 #text가 나옵니다.

Element 타입으로 element를 document를 통해 받습니다.

여기서 element는 최 상위 요소인 <sample></sample>을 의미합니다.

element.getNodeName()을 통해 받은 값이 sample임을 알 수 있습니다.

element.getAttribute("id")로 element 내 속성값을 가져올 수 있습니다.위 예제를 보면 "idSample"값을 가져왔습니다.

 

2. 첫 번째 Node 가져오기

 

14라인을 보면 Node 타입을 사용하고 있습니다. element를 시작으로 첫 번째 node를 받습니다. 바로 <people>인데요. getNodeName()를 사용해서 값을 가져왔는데 people 아닌 #text 가 출력됩니다. 그 이유는 xml 태그 사이의 공백 때문입니다. <sample>   <people>... 왼쪽을 보면 두 태그 사이에 공백이 있습니다.

공백을 없애도 되지만 Node 타입을 if문으로 비교해서 필터링할 수도 있습니다.

 

3. NodeList로 xml 정보 가져오기

 

그렇다면 첫 번째 node를 가져오고 리스트를 활용해서 xml 정보를 가져오는 소스를 이어서 보겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
        NodeList nList = firstNode.getNextSibling().getChildNodes();
 
        for(int i = 0; i < nList.getLength(); i++){
            Node item = nList.item(i);
            System.out.println("TYpe>>" + item.getChildNodes().getLength());
            if(item.getNodeType() == Node.ELEMENT_NODE){
                System.out.println(item.getNodeName());
                System.out.println(item.getTextContent());
                if (item.getAttributes().getLength() > 0){
                    System.out.println(item.getAttributes().getNamedItem("value").getNodeValue());
                }
             } 
        }
cs

위 소스를 보면 NodeList 타입을 가져오는데 firstNode에서 ChildNodes를  통해 NodeList 타입을 받아야 하지만 firstNode는 공백(#text)이라서 그 하위의 태그가 없습니다. 그래서 NextSibling을 통해서 다음 태그로 이동한 뒤 NodeList를 가져옵니다. 

4번 라인을 보면 for 문을 통해 nList(NodeList)의 Node 타입의 item(i)를 받습니다.

5번 라인의 의미는 해당 Node 하위에 몇 개의 Node 가 있는지 확인할 때 사용합니다.6번 라인에서 해당 Node 가 공백(#text)인 경우가 있었기에 Node.ELEMENT_NODE를 사용해서 거를 수 있습니다.7번 라인의 if 문 내부는 이제 공백이 아닌 정상적인 element의 정보를 활용할 수 있습니다.item.getNodeName() 은 현재 item의 태그명을 보여줍니다.item.getTextContent()는 현재 item에 싸여있는 <a> b </a> 이렇게 a에 싸여있는 b를 보여줍니다.이 값은 item.getFirstChild().getNodeValue() 로도 가져올 수 있습니다.

 

<address value="korea">

 

여기서 value는 address의 속성(attribute)라고 합니다.9번 라인으로 체크를 한 뒤 10번 라인으로 getNameItem("value")에 속성명을 넣고 getNodeValue()로 address의 value 속성값을 가져올 수 있습니다.

 

4. 마무리

 

이렇게 xml의 최상위 element와 속성값 받기,하위 Node와 NodeList 받아서 그 값들을 활용하는 방법에 대해 알아봤습니다.이 정도면 xml에서 값을 받고 활용하는데 충분해 보입니다.

 

다음 포스팅은 동적으로 xml과 내부 element를 생성하는 방법에 대해 알아보겠습니다.

반응형
반응형

안녕하세요. 신기한 연구소입니다.

node.js는 자바스크립트(Javascript) 서버로 많이 알고 있는데요. 사실 자바스크립트 런타임 환경(Javascript runtime environment)입니다.

브라우저 없이 바로 자바스크립트 코드를 실행해 볼 수 있는 런타임 환경이라는 의미인데요.

바로 같이 설치해 보겠습니다. (윈도우즈 11, windows 11)

 

1. node.js 사이트 방문해서 다운로드 하기.

아래 사이트에 방문합니다.

https://nodejs.org/ko

 

Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

영문 사이트는 /ko 대신 /en으로 바꾸면 됩니다.

해당 사이트에 접속하면 아래와 같은 화면이 나타납니다.

윈도우즈 11에서 설치하기에 알아서 Windows (x64) 설치버전이 나타납니다.

LTS와 현재 버전으로 받을 수 있는데요. 최신 기능을 가진 현재 버전보다는 안정적이고 신뢰도 높은 LTS 버전으로 선택합니다.

LTS는 Long Term Support의 약자로 긴 시간 동안 지원해 준다는 의미입니다. 30개월 정도 버그가 수정되는 것에 보증한다는 의미이기에 추천합니다. 물론 현재 버전을 설치해도 좋습니다.

 

2. 설치하기

다운로드된 실행 파일을 클릭합니다.

다음과 같은 화면이 나타납니다.

Next를 클릭합니다.

 

최종 사용자에 대한 라이선스 동의를 합니다.

I accept the terms in the LIcense Agreement에 클릭합니다.

 

설치 위치가 나타납니다.

기본으로 설정된 위치 그대로 두고 진행할 겁니다.

혹시 다른 위치를 원한다면 Change... 를 누르고 변경하면 됩니다.

수동으로 설치 항목을 설정하는 부분입니다.

npm package manager 도 보입니다.

기본 상태인 그대로 Next를 클릭합니다. (상세 옵션을 잘 아시는 분은 조정해도 됩니다.)

기본 상태로 설치해 보겠습니다. 체크 박스는 체크하지 않습니다.

Next를 클릭합니다.

이제 설정이 끝났으니 node.js를 설치할 수 있습니다.

Install을 클릭합니다.

실행하고 권한을 묻는다면 예를 클릭하세요.

실행바가 움직이고 설치가 진행됩니다.

설치가 끝났습니다.

이제 Finish를 클릭합니다.

중간에 자동으로 툴을 설치할 것에 체크박스를 클릭했다면 이 화면이 나타납니다.

아무 키나 누르면 다음 화면이 나옵니다.

다시 아무 키나 누릅니다.

그러면 Windows powershell을 실행할 건지 묻는 창이 나오고 예를 클릭하면 다음과 같이 쉘이 실행됩니다.

쉘에서 설치는 계속 진행됩니다. 천천히 기다려봅니다.

사실 체크박스를 선택하지 않았다면 Finish에서 설치는 끝납니다.

이제 설치가 잘 되었는지 확인해 봅니다.

비주얼스튜디오코드를 실행합니다.

터미널에 node를 입력하고 엔터키를 누르면 다음과 같이 나옵니다.

18.16.0 버전의 node.js가 잘 설치되었네요.

지금까지 node.js 설치하는 방법에 대해 알아봤습니다.

반응형