拆分XML并维护标题
我有一个很大的XML文件,我需要拆分并维护一些标题细节。请参见下面的示例拆分XML并维护标题,xml,split,Xml,Split,我有一个很大的XML文件,我需要拆分并维护一些标题细节。请参见下面的示例 Original <ArticleExportPackage> <PackageInfo> <License>1234</License> </PackageInfo> <ItemInfo> <ItemID>ABC123> </ItemIn
Original
<ArticleExportPackage>
<PackageInfo>
<License>1234</License>
</PackageInfo>
<ItemInfo>
<ItemID>ABC123>
</ItemInfo>
<ItemInfo>
<ItemID>BCD123>
</ItemInfo>
</ArticleExportPackage>
原件
1234
ABC123>
BCD123>
拆分后:
#1
<ArticleExportPackage>
<PackageInfo>
<License>1234</License>
</PackageInfo>
<ItemInfo>
<ItemID>ABC123>
</ItemInfo>
</ArticleExportPackage>
#2
<ArticleExportPackage>
<PackageInfo>
<License>1234</License>
</PackageInfo>
<ItemInfo>
<ItemID>BCD123>
</ItemInfo>
</ArticleExportPackage>
#1
1234
ABC123>
#2
1234
BCD123>
非常感谢您的指导 下面是用于执行拆分的代码
导入com.ximpleware.*;
导入java.io.*;
公共类simpleSplit{
公共静态void main(字符串[]s)引发VTDException、IOException{
VTDGen vg=新VTDGen();
如果(!vg.parseFile(“input.xml”,true))//名称空间感知已禁用
返回;
VTDNav vn=vg.getNav();
长l=0;
//获取packageInfo的片段描述符
if(vn.toElement(VTDNav.FIRST_CHILD,“PackageInfo”){
l=vn.getElementFragment();
}否则{
System.out.println(“未找到packageInfo”);
}
自动驾驶仪ap=新自动驾驶仪(vn);
XMLModifier xm=新的XMLModifier(vn);
ap.selectXPath(“/ArticleExportPackage/ItemInfo”);
int i=0,j=1;
字节[]ba1=“\n”.getBytes();
字节[]ba2=“\n”.getBytes();
byte[]ba=“\n”.getBytes();
而((i=ap.evalXPath())!=-1){
FileOutputStream fios=新的FileOutputStream(“文件”+j+“.xml”);
fios.write(ba1);//写入起始标记
vn.dumpFragment(l,fios);//写入Packageinfo片段
fios.write(文学学士);
vn.dumpFragment(fios);//编写ItemInfo片段
fios.write(ba2);//写入结束标记
j++;
}
}
}
下面是使用…进行拆分的代码
导入com.ximpleware.*;
导入java.io.*;
公共类simpleSplit{
公共静态void main(字符串[]s)引发VTDException、IOException{
VTDGen vg=新VTDGen();
如果(!vg.parseFile(“input.xml”,true))//名称空间感知已禁用
返回;
VTDNav vn=vg.getNav();
长l=0;
//获取packageInfo的片段描述符
if(vn.toElement(VTDNav.FIRST_CHILD,“PackageInfo”){
l=vn.getElementFragment();
}否则{
System.out.println(“未找到packageInfo”);
}
自动驾驶仪ap=新自动驾驶仪(vn);
XMLModifier xm=新的XMLModifier(vn);
ap.selectXPath(“/ArticleExportPackage/ItemInfo”);
int i=0,j=1;
字节[]ba1=“\n”.getBytes();
字节[]ba2=“\n”.getBytes();
byte[]ba=“\n”.getBytes();
而((i=ap.evalXPath())!=-1){
FileOutputStream fios=新的FileOutputStream(“文件”+j+“.xml”);
fios.write(ba1);//写入起始标记
vn.dumpFragment(l,fios);//写入Packageinfo片段
fios.write(文学学士);
vn.dumpFragment(fios);//编写ItemInfo片段
fios.write(ba2);//写入结束标记
j++;
}
}
}
import com.ximpleware.*;
import java.io.*;
public class simpleSplit {
public static void main(String[] s) throws VTDException, IOException{
VTDGen vg = new VTDGen();
if (!vg.parseFile("input.xml", true)) //namespace awareness disabled
return;
VTDNav vn = vg.getNav();
long l=0;
// get the fragment descriptor of packageInfo
if(vn.toElement(VTDNav.FIRST_CHILD,"PackageInfo")){
l=vn.getElementFragment();
}else{
System.out.println("packageInfo not found");
}
AutoPilot ap = new AutoPilot(vn);
XMLModifier xm = new XMLModifier(vn);
ap.selectXPath("/ArticleExportPackage/ItemInfo");
int i=0,j=1;
byte[] ba1 = "<ArticleExportPackage>\n".getBytes();
byte[] ba2 = "\n</ArticleExportPackage>".getBytes();
byte[] ba = "\n".getBytes();
while((i=ap.evalXPath())!=-1){
FileOutputStream fios = new FileOutputStream("file"+j+".xml");
fios.write(ba1);//write starting tag
vn.dumpFragment(l,fios); // write Packageinfo fragment
fios.write(ba);
vn.dumpFragment(fios);// write the ItemInfo fragment
fios.write(ba2);// write ending tag
j++;
}
}
}