gpt4 book ai didi

java - 如何在JDOM中写入xml属性值?

转载 作者:行者123 更新时间:2023-12-01 13:50:46 27 4
gpt4 key购买 nike

这是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>

这是我用于读取和写入文件 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 提出问题。

最佳答案

如果您希望 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));
}

关于java - 如何在JDOM中写入xml属性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19976137/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com