Как записать значение атрибута xml в JDOM?

Это файл xml. Я хочу одновременно читать и писать этот xml.

<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.


person vijayk    schedule 14.11.2013    source источник
comment
Я не могу сказать, что вы хотите написать. Можете ли вы отредактировать свой вопрос и добавить раздел, показывающий, что вы выдаете нам в данный момент, а также то, что вы хотите, чтобы это было?   -  person rolfl    schedule 14.11.2013


Ответы (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));
                }
person rolfl    schedule 14.11.2013