2013-11-14 2 views
0

Это xml-файл. Я хочу читать и писать этот xml за раз.Как написать значение атрибута xml в JDOM?

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

Это мой код java для чтения и записи файла attritube.

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> 

поиски атрибутов АНС изменение атрибутов файла также вопрос изменится, но главный вопрос не изменить его изменить, но без CDATA и Я хочу задать вопрос с CDATA.

+0

я могу Не говорите, что вы хотите написать. Можете ли вы отредактировать свой вопрос и добавить раздел, показывающий, что ваш выход на данный момент, а также то, что вы хотите? – rolfl

+0

можно увидеть сейчас. – vijayk

ответ

1

Если вы хотите quest0 быть приложена CDATA разметкой, а затем создать CDATA элемент контента:

Изменить раздел:

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

выглядеть следующим образом:

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

 Смежные вопросы

  • Нет связанных вопросов^_^