在java中按标记拆分XML String

时间:2016-08-25 12:54:39

标签: java xml xml-parsing

如何通过标记将xml-string拆分为不同的xml-strings?

假设我有以下XML。我怎么能有一个xml字符串 tag1及其值, tag2及其值和, tag3及其值。

 <?xml version="1.0"?>
 <Tag0>
   <Tag1> //Other tags and values for tag1 </Tag1>
   <Tag2> </Tag2>
   <Tag3> </Tag3>
 </Tag0>     

我正在分割XML,因为当我为xml-strings创建XSD时,它只为tag1创建XSD,因为其余的与tag1具有相同的名称空间。

3 个答案:

答案 0 :(得分:3)

在解析XML之后,您可以调用方法 getElementsByTagName 这将返回NodeList,并且只是从NodeList为每个元素实例化一个Node对象。

答案 1 :(得分:1)

首先使用SAXParser将xml解析为Java对象。然后你可以使用它获得任何东西。

答案 2 :(得分:1)

以下是在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();
        }
    }
}