javadom修改xml文件
我想将一些节点添加到现有的xml文件中。 xml文件结构如下所示:javadom修改xml文件,java,dom,xml-parsing,Java,Dom,Xml Parsing,我想将一些节点添加到现有的xml文件中。 xml文件结构如下所示: <?xml version="1.0" encoding="utf-8" standalone="no"?><?xml-stylesheet type="text/xsl" href="new2.xsl"?><patients> <patient> <stoixeia_astheni> <arithmos_eksetasis>
<?xml version="1.0" encoding="utf-8" standalone="no"?><?xml-stylesheet type="text/xsl" href="new2.xsl"?><patients>
<patient>
<stoixeia_astheni>
<arithmos_eksetasis>1</arithmos_eksetasis>
<imerominia_eksetasis>11/12/2005</imerominia_eksetasis>
<amka>14385</amka>
<surname>aaa</surname>
<name>aaa</name>
<onoma_patros>aaa</onoma_patros>
<imgennisis>15/03/1984</imgennisis>
<diagnosi>aaa</diagnosi>
<famagogi>depon</famagogi>
</stoixeia_astheni>
<stoixeia_epikoinonias>
<dieuthinsi>aaa</dieuthinsi>
<takodikas>11474</takodikas>
<perioxi>aaa</perioxi>
<stathero>2106425246</stathero>
<kinito>-</kinito>
</stoixeia_epikoinonias>
<loipa_stoixeia>
<fylo>aaa</fylo>
<oikkatastasi>aaa</oikkatastasi>
<epaggelma>aaa</epaggelma>
<istoriko>-</istoriko>
<sxolia>-</sxolia>
</loipa_stoixeia>
</patient>
<patient>
<stoixeia_astheni>
<arithmos_eksetasis>2</arithmos_eksetasis>
<imerominia_eksetasis>12/12/2005</imerominia_eksetasis>
<amka>14325</amka>
<surname>aaa</surname>
<name>aaa</name>
<onoma_patros>aaa</onoma_patros>
<imgennisis>15/03/1984</imgennisis>
<diagnosi>aaa</diagnosi>
<famagogi>depon</famagogi>
</stoixeia_astheni>
<stoixeia_epikoinonias>
<dieuthinsi>aaa</dieuthinsi>
<takodikas>11474</takodikas>
<perioxi>aaa</perioxi>
<stathero>2106425246</stathero>
<kinito>-</kinito>
</stoixeia_epikoinonias>
<loipa_stoixeia>
<fylo>aaa</fylo>
<oikkatastasi>aaa</oikkatastasi>
<epaggelma>aaa</epaggelma>
<istoriko>-</istoriko>
<sxolia>-</sxolia>
</loipa_stoixeia>
</patient>
</patients>
1.
11/12/2005
14385
aaa
aaa
aaa
15/03/1984
aaa
德蓬
aaa
11474
aaa
2106425246
-
aaa
aaa
aaa
-
-
2.
12/12/2005
14325
aaa
aaa
aaa
15/03/1984
aaa
德蓬
aaa
11474
aaa
2106425246
-
aaa
aaa
aaa
-
-
我正在尝试类似于:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
String[] elem;
elem = new String[20];
elem [1]="arithmos_eksetasis";
elem [2]="imerominia_eksetasis";
elem [3]="amka";
elem [4]="surname";
elem [5]="name";
elem [6]="onoma_patros";
elem [7]="imgennisis";
elem [8]="diagnosi";
elem [9]="famagogi";
elem [10]="dieuthinsi";
elem [11]="takodikas";
elem [12]="perioxi";
elem [13]="stathero";
elem [14]="kinito";
elem [15]="fylo";
elem [16]="oikkatastasi";
elem [17]="epaggelma";
elem [18]="istoriko";
elem [19]="sxolia";
try {
String filepath = "C:\\Users\\Chris\\Desktop\\tsiou\\workspace\\askhsh3\\WebContent\\askisi3.xml";
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.parse(filepath);
//Node staff = doc.getElementsByTagName("staff").item(0);
// append a new node to staff
Document doc2 = docBuilder.newDocument();
Element patient = doc2.createElement("patient");
Element st_as = doc2.createElement("stoixeia_astheni");
for(int i=1;i<=9;i++){
Element tmp= doc2.createElement(elem[i]);
tmp.appendChild(doc2.createTextNode("aaa"));
st_as.appendChild(tmp);
}
Element st_ep = doc2.createElement("stoixeia_epikoinonias");
for(int i=10;i<=15;i++){
Element tmp= doc2.createElement(elem[i]);
tmp.appendChild(doc2.createTextNode("aaa"));
st_ep.appendChild(tmp);
}
Element st_lp = doc2.createElement("loipa_stoixeia");
for(int i=16; i<=19;i++){
Element tmp= doc2.createElement(elem[i]);
tmp.appendChild(doc2.createTextNode("aaa"));
st_lp.appendChild(tmp);
}
patient.appendChild(st_as);
patient.appendChild(st_ep);
patient.appendChild(st_lp);
doc.importNode(patient,true);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer trans = tf.newTransformer();
OutputStream out = new FileOutputStream(filepath);
trans.transform(new DOMSource(doc), new StreamResult(out));
} catch (ParserConfigurationException pce) {
pce.printStackTrace();
} catch (TransformerException tfe) {
tfe.printStackTrace();
} catch (IOException ioe) {
ioe.printStackTrace();
} catch (SAXException sae) {
sae.printStackTrace();
}
response.setContentType("text/html");
PrintWriter pw = response.getWriter();
}
protectedvoiddopost(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{
//TODO自动生成的方法存根
字符串[]元素;
elem=新字符串[20];
元素[1]=“算术”;
elem[2]=“imerominia_eksetasis”;
elem[3]=“amka”;
elem[4]=“姓氏”;
元素[5]=“名称”;
elem[6]=“onoma_patros”;
elem[7]=“imgennisis”;
元素[8]=“诊断”;
elem[9]=“famagogi”;
elem[10]=“dieuthinsi”;
elem[11]=“takodikas”;
elem[12]=“perioxi”;
elem[13]=“stathero”;
elem[14]=“kinito”;
元素[15]=“fylo”;
elem[16]=“oikkatastasi”;
elem[17]=“epaggelma”;
elem[18]=“istoriko”;
elem[19]=“sxolia”;
试一试{
String filepath=“C:\\Users\\Chris\\Desktop\\tsiou\\workspace\\askhsh3\\WebContent\\askisi3.xml”;
DocumentBuilderFactory docFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder=docFactory.newDocumentBuilder();
Document doc=docBuilder.parse(文件路径);
//节点staff=doc.getElementsByTagName(“staff”)。项(0);
//将新节点附加到staff
Document doc2=docBuilder.newDocument();
元素patient=doc2.createElement(“患者”);
元素st_as=doc2.createElement(“stoixeia_-insulfi”);
对于(inti=1;i代替doc.importNode(patient,true);
,请尝试以下操作:
//Find existing parent node
Node patientsNode = doc.getElementsByTagName("patients").item(0);
//append the new child node
patientsNode.appendChild(patient);
我正在使用类似的代码,它工作得非常好。看看JaxB和谷歌如何对对象进行marshall和unmarshall。这会让生活变得更简单。错误:Error\u DOCUMENT\u ERR:一个节点在不同的文档中使用,而不是创建它的文档。@user2428997您不需要使用doc2
即DOCUMENT来创建元素doc2=docBuilder.newDocument();
。使用doc
本身(Element patient=doc.createElement(“patient”);
)创建patient
元素,然后将其追加。