gpt4 book ai didi

Java XML 分句删除节点

转载 作者:太空宇宙 更新时间:2023-11-04 12:24:30 32 4
gpt4 key购买 nike

执行以下操作所需的 Java 代码。我有一个 xml 作为字符串,例如

<EMpData>
<Employee1>
<Address1>XYZ<Address1/>
<city>DDD<city/>
<Employee1/>
<Employee2>
<Address1><Address1/>
<city><city/>
<Employee2/>
<EMpData/>

我必须检查是否有任何子节点为空或为空或没有值,如果存在,那么我必须删除父节点和子节点。所以上面的employee2是空的,我想要下面的输出

<EMpData>
<Employee1>
<Address1>XYZ<Address1/>
<city>DDD<city/>
<Employee1/>
<EMpData/>

请提出执行此操作的最佳且有效的方法。实际的 xml 大约有 500 到 700 行。

最佳答案

这是基于XPath和VTD-XML的代码..

import java.io.*;
import com.ximpleware.*;

public class removeNode2 {
public static void main(String s[]) throws VTDException, IOException{
VTDGen vg = new VTDGen();
String xml = "<EMpData>\n"+
"<Employee1>\n"+
"<Address1>XYZ</Address1>\n"+
"<city>DDD</city>\n"+
"</Employee1>\n"+
"<Employee2>\n"+
"<Address1></Address1>\n"+
"<city></city>\n"+
"</Employee2>\n"+
"</EMpData>\n";
vg.setDoc(xml.getBytes());
vg.parse(false);
VTDNav vn = vg.getNav();
AutoPilot ap = new AutoPilot(vn);
XMLModifier xm = new XMLModifier(vn);
ap.selectXPath("/EMpData/*[string-length(*/text())=0]");

int i=0;
while((i=ap.evalXPath())!=-1){
//System.out.println(" -====>"+ap2.evalXPathToBoolean());
xm.remove();
}
ByteArrayOutputStream baos= new ByteArrayOutputStream();
xm.output(baos);
System.out.println(baos.toString());
}
}

关于Java XML 分句删除节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38518310/

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