Java将XML拆分为单独的字符串

Java将XML拆分为单独的字符串,java,xml,string-utils,Java,Xml,String Utils,我想将XML文件拆分为单独的XML。通过阅读和标签。我使用StringUtils.substringsBetween分割了XML。但是,我只能从文件中拆分两个XML。第三个XML将附加第二个XML 节目: import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStr

我想将XML文件拆分为单独的XML。通过阅读和标签。我使用StringUtils.substringsBetween分割了XML。但是,我只能从文件中拆分两个XML。第三个XML将附加第二个XML

节目:

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.lang3.StringUtils;

public class SBuff {

    private BufferedReader br;

    public SBuff() {
        // TODO Auto-generated constructor stub
    }

    public static void main(String[] args) throws IOException {

         String data = "<?xml version=\"1.0\"?>\r\n" + 
                "<company>\r\n" + 
                "    <staff>\r\n" + 
                "        <firstname>yong</firstname>\r\n" + 
                "        <lastname>mook kim</lastname>\r\n" + 
                "        <nickname>mkyong</nickname>\r\n" + 
                "        <salary>100000</salary>\r\n" + 
                "    </staff>\r\n" + 
                "    <staff>\r\n" + 
                "        <firstname>low</firstname>\r\n" + 
                "        <lastname>yin fong</lastname>\r\n" + 
                "        <nickname>fong fong</nickname>\r\n" + 
                "        <salary>200000</salary>\r\n" + 
                "    </staff>\r\n" + 
                "    <staff>\r\n" + 
                "        <firstname>low</firstname>\r\n" + 
                "        <lastname>yin fong</lastname>\r\n" + 
                "        <nickname>fong fong</nickname>\r\n" + 
                "        <salary>200000</salary>\r\n" + 
                "    </staff>\r\n" + 
                "</company>\r\n"+
                "</xml>";

        SBuff s = new SBuff();
        s.loadData(data);
    }

    public void loadData(String stream) throws IOException {
        String[] list = StringUtils.substringsBetween(stream,
                "<staff">", "</staff>");

        StringBuilder stringBuilder = new StringBuilder();
        for (String s : list) {

            stringBuilder.append("<staff>");
            stringBuilder.append(s);
            stringBuilder.append("</staff>");
            System.out.println("##################################");
            System.out.println(stringBuilder.toString());
            System.out.println("##################################");
        }

    }

    public void display(String data) {
        System.out.println("Buffer Data: " + data);
    }
}
导入java.io.BufferedReader;
导入java.io.ByteArrayInputStream;
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.util.ArrayList;
导入java.util.List;
导入org.apache.commons.lang3.StringUtils;
公共类SBuff{
专用缓冲读取程序br;
公共SBuff(){
//TODO自动生成的构造函数存根
}
公共静态void main(字符串[]args)引发IOException{
字符串数据=“\r\n”+
“\r\n”+
“\r\n”+
“yong\r\n”+
“mook kim\r\n”+
“mkyong\r\n”+
“100000\r\n”+
“\r\n”+
“\r\n”+
“低\r\n”+
“尹芳\r\n”+
“芳芳\r\n”+
“200000\r\n”+
“\r\n”+
“\r\n”+
“低\r\n”+
“尹芳\r\n”+
“芳芳\r\n”+
“200000\r\n”+
“\r\n”+
“\r\n”+
"";
SBuff s=新的SBuff();
s、 装载数据(数据);
}
公共void加载数据(字符串流)引发IOException{
String[]list=StringUtils.substringsBetween(stream,

“对于实际输出-您的loadData函数

public void loadData(字符串流)引发IOException{
String[]list=StringUtils.substringsBetween(stream,“,”);
StringBuilder StringBuilder=null;
系统、输出、打印;
用于(字符串s:列表){
stringBuilder=新的stringBuilder();
stringBuilder.append(“”);
stringBuilder.append;
stringBuilder.append(“”);
//系统、输出、打印;
System.out.println(stringBuilder.toString());
系统、输出、打印;
}
}

您可以使用像jsoup这样的XML解析器

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.12.1</version>
</dependency>

除非您确切知道自己在做什么,否则不要使用字符串操纵工具处理XML。使用XML解析器解析XML字符串,并在XML元素级别进行更改。使用正则表达式、字符串#拆分等操纵任何类型的序列化数据总是一个坏主意
<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.12.1</version>
</dependency>
 Document doc = Jsoup.parse(data, "", Parser.xmlParser());
 for(Element staffElement: doc.getElementsByTag("staff")) {
   System.out.println(staffElement);
   System.out.println("##################################");
 }