XML을 저장/쓰기하고 싶습니다. JDOM을 사용하여 XML 파일에 특수 문자를 저장/쓰기 할 수 없습니다.
내가 이런 종류의 문자를 저장하려고 할 때 그것은 나에게 줄까요 ?? 문자 대신에 masrks.
나는이 문제에 대한 검색을하고 있지만 적절한 anwser를 얻을 수 없으므로 나를 도와주십시오.
내 코드에서는 먼저 xml을 읽고 몇 가지 변경 사항을 저장하고 저장합니다. 이것은 XML을 작성하기위한 제 Cide입니다.XML에서 특수 문자를 저장/작성하는 방법은 무엇입니까?
try {
String path="D://test//N2019_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());
ques.removeContent();
ques.addContent(new CDATA("question"+a));
}
if (ques.getName().equalsIgnoreCase("options")) {
List optList = ques.getChildren();
for (int k = 0; k < optList.size(); k++) {
Element option = (Element) optList.get(k);
if(option.getAttributeValue("file")!=null){
System.out.println(option.getAttributeValue("file"));
//write xml attribute
System.out.println(option.setAttribute("file","sadas"+k));
}
if(option.getName().equalsIgnoreCase("option")){
//read
System.out.println(option.getTextTrim());
option.removeContent();
option.addContent(new CDATA("option"+k));
}
}
}
if(ques.getName().equalsIgnoreCase("explaination")){
//read
System.out.println(ques.getTextTrim());
ques.removeContent();
ques.addContent(new CDATA("explaination"+a));
}
}
}
xmlOutput.output(document, new FileWriter(path));
// System.out.println(xmlOutput.outputString(document));
}catch (JDOMException ex) {
ex.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
이 내 XML 파일입니다
<?xml version="1.0" encoding ="utf-8" ?>
<mcss>
<quest ans="1">
<question><![CDATA[Write 5x= 3y-1 as linear equation form.]]></question>
<options>
<option><![CDATA[5x-3y+1=0]]></option>
<option><![CDATA[-5x-3y-1=0]]></option>
<option><![CDATA[5x+3y+1=0]]></option>
</options>
<explaination><![CDATA[Recall the linear equation in two variables form.]]></explaination>
</quest>
</mcss>
왜 CDATA를 사용하고 있습니까? 그리고 여기에있는 "특수 문자"는 무엇입니까? 귀하의 코드는 그것을 언급하지 않습니다 ... –
답장을 보내 주셔서 감사합니다. ≠이 문자를 쓰고 싶다면 다음과 같이 작성하십시오. 표. – vijayk