2014-09-27 10 views
1
를 사용하여 동일한 이름을 가진 동일한 수준에있는 모든 XML 요소를 얻는 방법

내가 같은 XML 파일에 동일한 수준의 많은 요소를 추가하는 방법을 알아야작성하고 JDOM

<lexicon> 
    <lexiconElement> 
    <word>xxxx</word> 
    <tag>NN 
     <frequancy>3</frequancy> 
    </tag> 
    <tag>VB 
     <frequancy>2</frequancy> 
    </tag> 
    </lexiconElement> 
</lexicon> 

다음과 같이 내 xml 파일입니다 JDOM을 사용하여 업데이트하고 JDOM을 사용하여 같은 레벨에서 같은 이름의 요소를 읽는 방법 ???

+0

질문을 입력 및 출력 XML로 모두 업데이트 할 수 있습니까? 주어진 xml이 당신의 입력이라고 가정합니다. 업데이트 된 XML의 모습. – Suvasis

+0

업데이트는 몇 가지 방법으로 발생할 수 있습니다. 1. xml에 새로운 요소를 추가하십시오. 2. 사이의 텍스트를 업데이트하십시오. 3. 사이에 텍스트 업데이트 Chirath

+0

샘플을 제공 할 수 있습니까? 주어진 xml – Suvasis

답변

1

나는 이것이 당신이 찾고있는 바램입니다.

try { 

      SAXBuilder builder = new SAXBuilder(); 
      File xmlFile = new File("D:\\your_file.xml"); 

      Document doc = (Document) builder.build(xmlFile); 
      Element rootNode = doc.getRootElement(); 

      Element lexiconElement = rootNode.getChild("lexiconElement"); 

      // 1. add new <tag> elements to xml 
      Element newTag = new Element("your_new_tag").setText("your_new_tag_value"); 
      lexiconElement.addContent(newTag); 

      // 2. Update the text between <frequancy> in perticular tag 
      //lexiconElement.getChild("tag").getChild("frequancy").setText("9"); 

      // 2. Update the text between <frequancy> in all tag 
      List<Element> list = lexiconElement.getChildren("tag"); 
      for(Element elm : list){ 
       elm.getChild("frequancy").setText("324"); 
      } 

      // 3. Update the text between <word> 
      lexiconElement.getChild("word").setText("yyyy"); 

      XMLOutputter xmlOutput = new XMLOutputter(); 

      xmlOutput.output(doc, new FileWriter("D:\\your_file.xml")); 

      System.out.println("*********Done************"); 
     } catch (IOException io) { 
      io.printStackTrace(); 
     } catch (JDOMException e) { 
      e.printStackTrace(); 
     } 
+0

감사합니다. 내 문제를 해결했다. – Chirath