Java将XML拆分为单独的字符串
我想将XML文件拆分为单独的XML。通过阅读和标签。我使用StringUtils.substringsBetween分割了XML。但是,我只能从文件中拆分两个XML。第三个XML将附加第二个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
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("##################################");
}