마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

XML파일로 저장할때 attribute 사이에 줄넘김(엔터) 입력하는 법 ?

0 추천
안녕하세요.

XML을 Domparser 로 파싱해서 일부 속성값을 변경한후 다시 XML 파일로 out 시키는 내용을 프로그래밍중입니다.

그런데 문제는 현재는 아래와 같이 output이 나와요

전환전

    <ImageView
        android:id="@+id/viewOverlayView"
        android:layout_width="480px"
        android:layout_height="800px"
        android:scaleType="centerCrop"

전환후

<ImageView android:id="@+id/viewOverlayView" android:layout_height="1280px" android:layout_width="768px" android:scaleType="centerCrop"/>

 

전환 후 를 보시면 한줄로다 표시 되는걸 알 수 있습니다. 문제는 태그와 태그 사이의 엔터는 들어가 있는데

속성과 속성간에 엔터를 입력하고 이왕이면 탭도 맞추고 싶은데요,

현재 XML document 는

    doc = db.parse(new FileInputStream("./old/"+files[x].getName()));
    element = doc.getDocumentElement();
    node_list = element.getElementsByTagName("*");

이렇게 모든 태그를 다 들고와서 doc 으로 저장하고 있고 단순히 BufferedReader 로 읽어와서 String으로 저장한게 아니기 때문에 문자열로 조작을 가하기는 힘든 상황입니다.

속성과 속성 사이에 개행문자를 추가하고 탭을 넣을려면 어떻게 해야할까요???
탯탯탯 (430 포인트) 님이 2013년 4월 10일 질문
탯탯탯님이 2013년 4월 10일 수정

1개의 답변

0 추천

attribute사이에 개행문자 넣는 기능은 기본으로는 없지 않을까요?

하지만 어렵지 않게 만들 수 있을 것 같습니다.

 

pseudo-code입니다. xml 관련 함수명은 다를 수 있습니다.

void beautifyXML(XMlElement elem, Writer writer, int depth) {

    for (int i = 0; i < depth; i++)

        writer.printf("\t");

    writer.printf("<" + elem.getTagName() + "\n");

    for (int i = 0; i < elem.getAttrCount(); i++) {

        Attribute atr = elem.getAttribute(i);


        for (int j = 0; j < depth; i++)

            writer.printf("\t");

        writer.printf("\t" + atr.getName() + "=" + atr.getValue() + "\n");
    }

    for (int i = 0; i < elem.getChildCount(); i++)

       beautifyXML(elem.getChildAt(i), writer, depth+1);



    for (int i = 0; i < depth; i++)

        writer.printf("\t");

    printf("/" + elem.getTagName() + ">\n");

}
 
 
실제 부를 때,
 
beautifyXML(xml.getDocumentElement(), 0);
 
레오나 (3,290 포인트) 님이 2013년 4월 10일 답변
레오나님이 2013년 4월 10일 수정
...