2014-02-18 1 views
0

xml의 요소 목록에 관한 질문이 있습니다JDOM의 요소 목록

아래의 모든 항목과 태그를 삭제하려고합니다. 내가 PARAM의 내 목록을 디버깅 할 때

는하지만 내 목록은 다음과 같습니다주의 :

text 
element 
text 
element 
text 
element 
text 
element 

하지만 그래서 더 쉽게 올바른 요소를 삭제할 수 있습니다 만이 목록의 요소가 아닌 텍스트를합니다. 이 작업을 수행하는 방법?

이 내 코드입니다 :

public void deleteParameter(int row, int index) { 

     int objTypeIndex = index + 1; 

     File xml = new File(XMLEditorService.getXMLEditorService().getFile()); 

     try { 
      XMLOutputter xmlOut = new XMLOutputter(); 
      org.jdom2.Document doc = new SAXBuilder().build(xml); 
      Namespace ns = Namespace.getNamespace("http://www.xxx.com"); 
      org.jdom2.Element rootNode = doc.getRootElement(); 
      org.jdom2.Element typeContent = rootNode.getChildren().get(
        objTypeIndex); 

      List<Element> list = typeContent.getChildren("param", ns); 

      if (list.size() > 0) { 
       Element element = list.get(row); //remove correct element 
       element.removeContent(); 

       System.out.println("element removed: " + element.getName()); 
       xmlOut.setFormat(Format.getPrettyFormat()); 
       xmlOut.output(doc, new FileWriter(XMLEditorService 
         .getXMLEditorService().getFile())); 

      } 

     } catch (IOException io) { 
      System.out.println(io.getMessage()); 
     } catch (JDOMException jdomex) { 
      System.out.println(jdomex.getMessage()); 
     } 

    } 

내가이 라인을 다스 려하고 목록 : List<Element> list = typeContent.getChildren("param", ns);

debug

+0

XML 문서, 메서드 호출 (예 :'deleteParameter (1,2) '), 예상 결과 및 현재 표시되는 항목에 최소한의 예제를 제공해 주시겠습니까? –

+0

확인 완료 Ive 업데이트. 그냥 왜 그것이 questoin에 대한 관련이 될지 모르겠다. – Sembrano

+0

미안하지만 나는 그 질문에 대해 오해하고있는 것 같습니다. 나에게 아직도 불분명하지만, 다른 누군가가 당신을 도울 수 있기를 바랍니다. –

답변

1

메서드 호출 : element.removeContent(); 부모에서 요소를 제거하지 않습니다, 대신 요소에서 모든 내용을 제거합니다 (비게 만듭니다).

당신은 아마도 : element.detach(); 대신에 .... 엘리먼트를 (그리고 그 결과로 모든 내용을) 문서에서 제거 할 것입니다.

+0

어쩌면 내 질문에 명확하지 않았다 : 요소 목록에 포함되어 있습니다 : 텍스트, 요소, 텍스트, 요소 등. 그러나 정확한 요소를 삭제할 수 있도록 요소, 요소, 요소 만 원합니다. . 텍스트를 걸러 낼 수있는 방법이 있습니까? – Sembrano

+0

@Sembrano 당신이 틀렸다고 생각합니다. "요소 목록"에는 "텍스트"가 포함되지 않습니다. 'Content'의 목록은 컨티 넨스 텍스트이지만'typeContent.getChildren ("param", ns)'는 단지'Element's – rolfl

+0

aight를 포함 할 것입니다. 사실 그 contentList를 말하고있을 때, 나는 이것을 이해하지 못합니다. 내 디버깅 사진에서 내 목록 콘텐츠를 올렸습니다. 그리고이 "텍스트"는 무엇이며 왜 그것을 만드나요? – Sembrano

1

JDOM2 필터를 사용하여 특정 유형의 요소를 가져올 수 있습니다. This 예제를 보면 JDOM2에서 필터를 사용하여 XML의 특정 엘리먼트를 검색하는 방법을 볼 수있다.