java中按标记拆分XML字符串
如何按标记将xml字符串拆分为不同的xml字符串 假设我有以下XML。如何使用xml字符串 tag1及其值, tag2及其值和, tag3及其值java中按标记拆分XML字符串,java,xml,xml-parsing,Java,Xml,Xml Parsing,如何按标记将xml字符串拆分为不同的xml字符串 假设我有以下XML。如何使用xml字符串 tag1及其值, tag2及其值和, tag3及其值 <?xml version="1.0"?> <Tag0> <Tag1> //Other tags and values for tag1 </Tag1> <Tag2> </Tag2> <Tag3> </Tag3> </Tag0&
<?xml version="1.0"?>
<Tag0>
<Tag1> //Other tags and values for tag1 </Tag1>
<Tag2> </Tag2>
<Tag3> </Tag3>
</Tag0>
//tag1的其他标记和值
我之所以拆分XML,是因为当我为XML字符串创建XSD时,它只为tag1创建XSD,因为其余的字符串与tag1具有相同的命名空间 解析XML后,可以调用方法getElementsByTagName,这将返回一个NodeList,并仅从NodeList为每个元素实例化一个节点对象 解析XML后,可以调用方法getElementsByTagName,这将返回一个NodeList,并仅从NodeList为每个元素实例化一个节点对象 首先使用a将xml解析为Java对象。然后,您可以使用它获取任何内容。首先使用a将xml解析为Java对象。然后,您可以使用它获取任何内容。以下是使用XPath和vtd xml进行拆分的代码
import com.ximpleware.*;
import java.io.*;
public class splitXML {
public static void main(String[] args) throws VTDException, IOException {
VTDGen vg = new VTDGen();
if (!vg.parseFile("d:\\xml\\input.xml", false)){
System.out.println("error");
return;
}
VTDNav vn = vg.getNav();
AutoPilot ap = new AutoPilot(vn);
ap.selectXPath("/tag0/*");
int i=0,n=0;
FileOutputStream fos =null;
while((i=ap.evalXPath())!=-1){
fos = new FileOutputStream("d:\\xml\\output"+(++n)+".xml");
long l = vn.getElementFragment();
fos.write(vn.getXML().getBytes(), (int)l, (int)(l>>32));
fos.close();
}
}
}
下面是使用XPath和vtd xml进行拆分的代码
import com.ximpleware.*;
import java.io.*;
public class splitXML {
public static void main(String[] args) throws VTDException, IOException {
VTDGen vg = new VTDGen();
if (!vg.parseFile("d:\\xml\\input.xml", false)){
System.out.println("error");
return;
}
VTDNav vn = vg.getNav();
AutoPilot ap = new AutoPilot(vn);
ap.selectXPath("/tag0/*");
int i=0,n=0;
FileOutputStream fos =null;
while((i=ap.evalXPath())!=-1){
fos = new FileOutputStream("d:\\xml\\output"+(++n)+".xml");
long l = vn.getElementFragment();
fos.write(vn.getXML().getBytes(), (int)l, (int)(l>>32));
fos.close();
}
}
}
通过使用XML解析器?XML和正则表达式不匹配:。。。或者有趣的vesion:通过使用XML解析器?XML和正则表达式不匹配:。。。或者有趣的维森: