对于超大xml的操作
import java.io.*;
import javax.xml.parsers.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
public class Main extends DefaultHandler{
public static void main(String[] argv){
try{
//清空TestNew.xml
FileWriter fileWriter = new FileWriter(new File("./src/com/edu/sjtu/TestNew.xml"));
fileWriter.write("");
fileWriter.flush();
//生成工厂
SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
//生成xml解析器
SAXParser saxParser = saxParserFactory.newSAXParser();
//解析器读取xml文件
saxParser.parse(new File("./src/com/edu/sjtu/Test.xml"), new Main());
}
catch (Exception e){
e.printStackTrace();
}
}
public void writeFile(String s){
try{
FileWriter fileWriter = new FileWriter(new File("./src/com/edu/sjtu/TestNew.xml"), true);
fileWriter.write(s);
fileWriter.flush();
}
catch (Exception e){
e.printStackTrace();
}
}
//重写
@Override
public void startDocument(){
writeFile("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n");
}
@Override
public void startElement(String uri, String localName, String name, Attributes attributes){
writeFile("<" + name);
for(int i = 0; i < attributes.getLength(); i++)
writeFile(" " + attributes.getLocalName(i) + "=\"" + attributes.getValue(i) + "\"");
writeFile(">");
}
@Override
public void characters(char[] ch, int start, int length){
String tmpString = new String(ch, start, length);
writeFile(tmpString);
}
@Override
public void endElement(String uri, String localName, String name){
writeFile("</" + name + ">");
}
}
使用xml schema验证xml
import java.io.*;
import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.*;
public class XmlSchema{
public static void main(String[] argv){
try{
//生成工厂
SchemaFactory schemaFactory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
//读取xml schema文件
File schemaFile = new File("./src/com/edu/sjtu/Test.xsd");
//生成schema对象
Schema schema = schemaFactory.newSchema(schemaFile);
//生成schema验证器
Validator validator = schema.newValidator();
//读取xml源文件
Source sourceXml = new StreamSource("./src/com/edu/sjtu/Test.xml");
//验证
validator.validate(sourceXml);
System.out.println("验证成功");
}
catch(Exception e){
e.printStackTrace();
}
}
}