티스토리 뷰

728x90

res폴더에 있는 xml 파일을 읽는 코드입니다.

정확하게 말하면 DOM형식의 파일을 읽는 코드입니다. 그래서 xml 뿐만 아니라 html도 읽는데 활용할수 있습니다.

 

xml을 보면 저는 <data>태그 안에 정보들이 들어 있습니다.

NodeList nodeList = doc.getElementsByTagName("data");//여기 변경

코드가 <data></data>로 둘러 싸여 있는 것들을 모두 가져옮니다.

 Log.e("tag", String.valueOf(node.getChildNodes().item(1).getFirstChild().getNodeValue()));//여기변경

그리고 .getChildNodes()로 하여 하위 데이터를 읽습니다.

위 로그 같은경우 <major>의 데이터를 출력합니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<data>
        <major>학생과</major>
        <year>0</year>
        <subjectCode>SQ11872</subjectCode>
        <classNum>001</classNum>
        <subjectName>교육봉사활동</subjectName>
        <subjectType>일반선택</subjectType>
        <grade>2</grade>
        <professor>윤석찬</professor>
        <limitNumber>0</limitNumber>
        <time>월 09:00(100) -</time>
        <English> </English>
        <refinementType/>
    </data>

 

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import jsy.timetable.R;
import jsy.timetable.Utils.Subject;
 
public class LodingActivity extends AppCompatActivity {
    private TextView myView;
    private ArrayList<Subject> subjects;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_loding);
 
        myView = (TextView)findViewById(R.id.myView);
        InputStream inputStream = getResources().openRawResource(R.raw.input3);
 
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        try {
            DocumentBuilder db = dbf.newDocumentBuilder();
            try {
                Document doc = db.parse(inputStream);
                doc.getDocumentElement().normalize();
                NodeList nodeList = doc.getElementsByTagName("data");//여기 변경
                int count = nodeList.getLength();
                for(int i=0;i<count;i++){
                    Node node = nodeList.item(i);
                    Log.e("tag", String.valueOf(node.getChildNodes().item(1).getFirstChild().getNodeValue()));//여기변경
                }
            } catch (SAXException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        }
         
    }
}

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
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
글 보관함