본문 바로가기
Android

XML Parsing

by Birthmark 2020. 7. 8.

XML파일을 다운로드 후 파싱 (스레드통신으로 연결)

 

[안드로이드] 네트워크 - XML처리 - XML 파싱 ( DOM Parser, 핸들러 이용;비동기)

[참고] 관련포스트 URL [안드로이드] XML 파싱 실전예제 - XmlPullParser를 이용한 뉴스어플 만들...

blog.naver.com

어플 내부 xml 파일 파싱

 

[안드로이드 스튜디오] 내부 XML 파싱 - 1

어플 내부에 있는 XML 파일을 파싱하는 예제다. === student.xml ===           홍길동        32        용인              이순신        31        서울      ..

link2me.tistory.com

중첩태그 파싱

 

Java에서 DocumentBuilder를 사용하여 중복 xml 태그 값을 구문 분석 할 수 없습니다.

고유 한 내부 태그가 하나있는 경우 XML 객체를 구문 분석 할 수 있습니다. 하지만 문제는 부모 태그에 두 개의 중복 태그가있을 때입니다. 두 태그 값을 모두 얻으려면 어떻게해야합니까? XML 문��

stackoverrun.com

★중첩태그 파싱 유사 케이스

 

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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
  public ArrayList<Point> parseXml() {
        Log.i(TAG, "parser()");
        ArrayList<Point> arrayList = new ArrayList<>();
        //内部XMLファイル使う際に
        InputStream inputStream = getResources().openRawResource(R.raw.sample);
        InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
        BufferedReader reader = new BufferedReader(inputStreamReader);
        Point p = new Point();
        try {
            XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
            XmlPullParser xmlParser = factory.newPullParser();
            xmlParser.setInput(reader);
            String tag; // TAGを保存のため
            //StringBuffer attr = new StringBuffer(); //Stringを保存と出力のため
            int eventType = xmlParser.getEventType();
            //END TAGじゃないと Loopを回しながらParsingになる
            while (eventType != END_DOCUMENT) {
 
                switch (eventType) {
                    case XmlPullParser.START_TAG:
                        tag = xmlParser.getName(); //現タグ名を保存
 
                        if (tag.equals("add")) { //nameであるタグが入ると
 
 
                            /*for (int index = 0; index < xmlParser.getAttributeCount(); index++) {
                                int code = index + 1;
                                if (xmlParser.getAttributeValue(index).equals("通信台数")) {
                                    count = Integer.parseInt(xmlParser.getAttributeValue(code));
                                }
                            }*/
                            int count = 3;
                            for (int index = 0; index < xmlParser.getAttributeCount(); index++) {
 
                                Toast.makeText(getApplicationContext(), "value", Toast.LENGTH_LONG).show();
                                if (xmlParser.getAttributeValue(index).equals("給油ポイント" + count + " 表示位置")) {
 
                                    p.setPosition(xmlParser.getAttributeValue(index + 1));
 
                                }
                                else if (xmlParser.getAttributeValue(index).equals("給油ポイント" + count + " 表示名")) {
                                    p.setPointNum(xmlParser.getAttributeValue(index + 1));
                                }
                                arrayList.add(p);
                            }
                        }
                        break;
 
                 /*   case XmlPullParser.END_TAG:
                        String endTag = xmlParser.getName();
                        if (endTag.equals("beacon")) {
                            arrayList.add(p);
                        }
                        break;
*/
 
 
                }//End of switch
                eventType = xmlParser.next();
            }
        }catch (Exception e) {
            e.printStackTrace();
        }
        return arrayList;
    }
 
cs

댓글