2013-11-14 3 views
0

이것은 xml 파일입니다. 한 번에이 XML을 읽고 쓰고 싶습니다.JDOM에서 xml 속성 값을 쓰는 방법은 무엇입니까?

<quest ans="0"> 
    <question file="image.png"><![CDATA[A quadrilateral must be a parallelogram if one pair of opposite sides is _____.]]></question> 
</quest> 

이 파일은 내 attritube를 읽고 쓰는 Java 코드입니다.

String path="D://test//N2086_set1.xml"; 
      File structureXml = new File(path); 
      SAXBuilder saxb = new SAXBuilder(); 
      Document document = saxb.build(structureXml); 
      Element rootElement = document.getRootElement(); 
      XMLOutputter xmlOutput = new XMLOutputter(); 

      List qestList = rootElement.getChildren(); 
      for (int i = 0; i < qestList.size(); i++) { 
       Element quesList = (Element) qestList.get(i); 
       System.out.println(quesList.getAttributeValue("ans")); 
       //change ans field 
       quesList.setAttribute("ans", ""+i); 
       List qList = quesList.getChildren(); 
       for(int a=0;a< qList.size();a++){ 
        Element ques =(Element) qList.get(a); 
        if(ques.getAttributeValue("file")!=null){ 
         //read xml 
         System.out.println(ques.getAttributeValue("file")); 
         //write xml attribute 
         System.out.println(ques.setAttribute("file","dasd"+a)); 
        } 
        if(ques.getName().equalsIgnoreCase("question")){ 
         //read 
         System.out.println(ques.getTextTrim()); 
          //write 
         ques.setText("question"+a); 
        } 
       } 
      } 
      } 

출력

<quest ans="0"> 
    <question file="dasd0">question0</question> 
</quest> 

입니다하지만 난

<quest ans="0"> 
<question file="dasd0"><![CDATA[question0]]></question> 
</quest> 

퀘스트 ANS 속성 원하는 변화와 질문 속성 파일도 변경되어 있지만 주요 문제는 그것이 변경 변경하지만 CDATA와없는 것은 아니다입니다 CDATA로 질문하고 싶습니다.

+0

내가 할 수있는 :

 if(ques.getName().equalsIgnoreCase("question")){ //read System.out.println(ques.getTextTrim()); //write ques.setText("question"+a); } 

같이하기를 당신이 쓴 것을 말하지 마라. 질문을 편집하고 현재 출력물이 무엇인지, 그리고 원하는 결과를 보여주는 섹션을 추가 할 수 있습니까? – rolfl

+0

지금보실 수 있습니다. – vijayk

답변

1

당신이 quest0가 CDATA 마크 업으로 묶어야 할 경우, 다음 CDATA 콘텐츠 항목 생성 :

변경 섹션 :

   if(ques.getName().equalsIgnoreCase("question")){ 
        //read 
        System.out.println(ques.getTextTrim()); 
         //write 
        ques.removeContent(); 
        ques.addContent(new CDATA("question"+a)); 
       } 
관련 문제