java
  • xml
  • dom
  • xml-parsing
  • 2013-07-10 5 views -1 likes 
    -1

    XML 파일을 구문 분석하여 특정 태그의 속성을 가져 오려고합니다. 아래는 내가 위의 XML 파일에서 해시, 이름, 패키지 버전, 파일 크기, create_date, UPDATE_DATE 값을 얻기 위해 노력하고 파일 -XML 파일에서 특정 태그의 속성 가져 오기

    <?xml version="1.0" encoding="UTF-8"?> 
    <app hash='nv' name='Tech' package='1.0' version='13' filesize='200' create_date='01-03-1987' upate_date='07-09-2013' > 
        <url> 
         <name>RJ</name> 
         <score>10</score> 
        </url> 
        <url> 
         <name>ABC</name> 
         <score>20</score> 
        </url> 
    </app> 
    

    내 XML이다.

    아래 코드는 위의 XML 파일을 구문 분석하려고 시도하지만, app 태그에서 위의 필수 속성을 얻는 방법을 잘 모르겠습니다.

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    
    try { 
    
        InputStream is = request.getInputStream(); 
        Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(is); 
        doc.getDocumentElement().normalize(); 
    
        System.out.println("root of xml file" + doc.getDocumentElement().getNodeName()); 
    
        //get hash, name, package value from the app tag in the XML file 
    
        } catch (Exception e) { 
         System.out.println(e); 
        } 
    

    아무도 도와 줄 수 있습니까?

    +0

    xml에서 정보를 추출하려고 시도하는 코드가 없으므로이 주제에 대한 자습서를 아직 보지 못한 것입니다. 이게 나라면 시작하는 곳이야. 여기에 오기 전에 주제에 대한 기본적인 지식을 습득하십시오. 그러면 더 나은 질문을하는 데 도움이 될 것이기 때문입니다. 제쳐 놓고, 당신은 그 방법을위한 빈 캐치 블럭을 가지고 광기로 인도해서는 안됩니다. –

    +0

    나는이 튜토리얼을 이미 살펴 봤지만 어떻게 든 그것들을 얻는 방법을 이해할 수는 없다. 또한 필자는 그에 맞게 이해할 수있는 유사한 튜토리얼을 찾을 수 없었습니다. – AKIWEB

    +0

    이전 질문에서 xml로 시작한 것으로 보입니다. 먼저 약간의 연구를해야합니다. 정말. 바로 가기가 없으며 특히 stackoverflow가이를 대체하지 않습니다. –

    답변

    1

    Jsoup은 XML 기반 문서 작업을위한 Java의 훌륭한 라이브러리입니다.

    귀하의 경우에는

    , 당신은 "응용 프로그램"태그로 태그를 얻을 수과 같이 그 속성을 구문 분석 :

    는 문자열로의 InputStream를 변환하기 위해
    String result = getStringFromInputStream(is); 
    
    Document doc = Jsoup.parse(result, "", Parser.xmlParser()); 
    Element e = doc.getElementsByTag("app").first(); 
    
    System.out.println(e.attr("hash")); 
    System.out.println(e.attr("name")); 
    
    //etc... 
    

    , 당신은 MyKong's method를 사용할 수 있습니다

    private static String getStringFromInputStream(InputStream is) { 
    
        BufferedReader br = null; 
        StringBuilder sb = new StringBuilder(); 
    
        String line; 
        try { 
    
         br = new BufferedReader(new InputStreamReader(is)); 
         while ((line = br.readLine()) != null) { 
          sb.append(line); 
         } 
    
        } catch (IOException e) { 
         e.printStackTrace(); 
        } finally { 
         if (br != null) { 
          try { 
           br.close(); 
          } catch (IOException e) { 
           e.printStackTrace(); 
          } 
         } 
        } 
    
        return sb.toString(); 
    
    } 
    

    행운을 빌어 요!

    관련 문제