2011-02-01 14 views
0

XML 파일에있는 태그를 모른 채 XML 파일을 구문 분석 할 수있는 방법이 있습니까?Android에서 XML을 동적으로 파싱 하시겠습니까?

XML 파일은 입력으로 주어지며 파싱되어야합니다. 태그가 존재하지 않으므로 DOM Parser 또는 SAX 파서를 사용하여 구문 분석하기가 어려웠습니다.

이 방법이 있습니까?

감사합니다,이를 위해 시바 쿠마르

+3

당신이 당신이 구문 분석 뭘 원하는지 어떻게 당신이받은 XML 문서의 구조를 알 수없는 경우를 ? –

+0

실제로 XML 파일에는 텍스트 및 이미지 형식의 일부 데이터가 포함됩니다 (바이트 코드 문자열로 변환되어 XML에 저장 됨) !! 이제 그 데이터를 가져 와서 화면에 표시하고 싶습니다 !! –

답변

5

나는 무엇이 문제인지 명확하지 않다. Java DOM 및 SAX 파서는 사전에 요소 태그 및 속성을 알 필요가 없습니다. 올바른 형식의 XML을 구문 분석합니다. 내가 특별히 안드로이드에 구문 분석 XML에 익숙하지 해요,하지만 여기 튜토리얼은 파서는 요소 태그를 알아야을 시사하고 사전에 속성을하지 않습니다

http://www.ibm.com/developerworks/opensource/library/x-android/

예를 들어, DOM을 사용할 수 있습니다 XML 문서를 구문 분석하여 DOM 트리를 가져옵니다. 요소 이름을 모르기 때문에 DOM 트리에서 요소 이름을 사용하여 특정 하위 또는 하위 요소를 쿼리 할 수는 없지만 Document.getDocumentElement()Node.getChildNodes()과 같은 호출을 통해 트리를 이동할 수는 있습니다. XML 문서를 파싱 한 결과 구조화 된 DOM 트리로 무엇을해야 할지를 아는 코드까지 달려 있지만 DOM 파서 자체는 특정 요소 태그와 특성이 무엇인지 신경 쓰지 않습니다.

마찬가지로 XML 문서를 SAX 파서에 공급할 수 있으며 SAX는 SAX 파서를 통해이를 파싱합니다. SAX는 요소 이름과 해당 요소의 속성 맵을 사용하여 ContentHandler.startElement() 콜백을 호출합니다. 코드는 XML 문서를 처리 할 때 SAX 파서가 찾은 요소 및 특성을 사용하여 수행 할 작업을 결정해야하지만 SAX는 특정 요소 태그 및 특성이 무엇인지 신경 쓰지 않습니다.

그럼 궁금한 점이 무엇입니까? XML 구문 분석의 결과와 관련하여 코드에서 수행하고자하는 작업은 무엇입니까? 그것을 확인하려고합니까? 그걸 꽤 멋지게 인쇄하려고합니까? 다른 형식으로 변환하려고하십니까?

+3

+1. 나는 당신에게 다른 질문을 추가하고 싶습니다. '네가하고 싶은 것을 정말로 알고 있니? ' –

1

당신은 간단한 파일로 읽을 수 있습니다. BufferedReader을 사용하여 말하십시오. 그런 다음 각 라인을 읽고 닫음 탭 또는 패턴 일치가 <> 또는 </> 일 때 검색하십시오.

나머지 문자를 읽고 자신의 버퍼에 채우십시오. 요약하면 원시 파서를 개발하는 것과 같습니다.

하지만 확실하게 작동합니다. 그 지루한. :)

0

당신은 자산 폴더에 XML 파일을 가져이 같은 XML 파일을 구문 분석 할 수 있습니다 :

NodeList root = doc.getElementsByTagName("root"); 
    NodeList nlQuestions = root.item(0).getChildNodes(); 

    QuestionObject[] allQuestions = new QuestionObject[nlQuestions.getLength()]; 

    for (int i = 0; i < nlQuestions.getLength(); i++){ 
     Node question = nlQuestions.item(i); 
     NodeList childNodes = question.getChildNodes(); 

     QuestionObject x = new QuestionObject(); 

     for (int j = 0; j < childNodes.getLength(); j++){ 
      Node child = childNodes.item(j);    

      if (child.getNodeName() !="#text"){ 
       Questions t = Questions.valueOf(child.getNodeName()); 
관련 문제