dom
<?xml version="1.0" encoding="UTF-8" standalone="no"?><exam>
<Student examid="22" idcard="01">
<name value="zhangsan">张三</name>
<location>湖北</location>
<grade>89</grade>
</Student>
</exam>
package org.example.dom;
import lombok.Data;
@Data
public class Student {
private String idcard;
private String examid;
private String name;
private String location;
private double grade;
}
package org.example.dom;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
public class StudentDao {
public void add(Student s) {
try {
Document document = XmlUtils.getDocument();
Element student_tag = document.createElement("Student");
Element name = document.createElement("name");
Element location = document.createElement("location");
Element grade = document.createElement("grade");
name.setTextContent(s.getName());
location.setTextContent(s.getLocation());
grade.setTextContent(s.getGrade() + "");
student_tag.setAttribute("idcard", s.getIdcard());
student_tag.setAttribute("examid", s.getExamid());
student_tag.appendChild(name);
student_tag.appendChild(location);
student_tag.appendChild(grade);
document.getElementsByTagName("exam").item(0)
.appendChild(student_tag);
XmlUtils.writeXml(document);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public Student find(String examid) {
try {
Document document = XmlUtils.getDocument();
NodeList node = document.getElementsByTagName("Student");
for (int i = 0; i < node.getLength(); i++) {
Element parentNode= (Element) node.item(i);
String id=parentNode.getAttribute("examid");
if (id.equals(examid)) {
Student s = new Student();
s.setExamid(examid);
s.setIdcard(parentNode.getAttribute("idcard"));
s.setName(parentNode.getElementsByTagName("name").item(0)
.getTextContent());
s.setLocation(parentNode.getElementsByTagName("location")
.item(0).getTextContent());
s.setGrade(Double.parseDouble(parentNode
.getElementsByTagName("grade").item(0)
.getTextContent()));
return s;
}
}
return null;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public void delete(String name) throws StudentNotExistException {
try {
Document document = XmlUtils.getDocument();
NodeList list = document.getElementsByTagName("name");
for(int i=0;i<list.getLength();i++){
if(list.item(i).getTextContent().equals(name)){
list.item(i).getParentNode().getParentNode().removeChild(list.item(i).getParentNode());
XmlUtils.writeXml(document);
return;
}
}
throw new StudentNotExistException(name+"不存在");
}
catch (StudentNotExistException e) {
throw e;
}catch (Exception e) {
throw new RuntimeException(e);
}
}
}
package org.example.dom;
public class StudentNotExistException extends Exception {
private static final long serialVersionUID = 1L;
public StudentNotExistException() {
super();
}
public StudentNotExistException(String message, Throwable cause,
boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
public StudentNotExistException(String message, Throwable cause) {
super(message, cause);
}
public StudentNotExistException(String message) {
super(message);
}
public StudentNotExistException(Throwable cause) {
super(cause);
}
}
package org.example.dom;
import java.io.File;
import java.io.FileOutputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
public class XmlUtils {
private static String filename = "E:\\workspace\\my\\spring\\mybatisParse\\src\\main\\java\\org\\example\\dom\\exam.xml";
public static Document getDocument() throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
return builder.parse("file:///"+filename);
}
public static void writeXml(Document document) throws Exception{
TransformerFactory factory=TransformerFactory.newInstance();
Transformer tf=factory.newTransformer();
tf.transform(new DOMSource(document), new StreamResult(new FileOutputStream(filename)));
}
}
package org.example.dom;
import org.w3c.dom.NodeList;
import javax.xml.xpath.*;
public class XpathTest {
public static void main(String[] args) throws Exception {
XPathFactory xPathFactory = XPathFactory.newInstance();
XPath xPath = xPathFactory.newXPath();
XPathExpression compile = xPath.compile("//name[@value="+"zhangsan"+"]");
NodeList result =(NodeList) compile.evaluate(XmlUtils.getDocument(), XPathConstants.NODESET);
}
}
dom4j
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 书架 SYSTEM "book.dtd">
<书架>
<书>
<书名 name="yyy">javaee</书名>
<作者>老王</作者>
<售价>120元</售价>
</书>
<书>
<书名 name="xxx">javase</书名>
<作者>老张</作者>
<售价>15</售价>
</书>
</书架>
package dom4j;
import java.io.FileOutputStream;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.junit.Test;
public class Demo1 {
@Test
public void read() throws DocumentException {
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml");
Element root = document.getRootElement();
Element book = (Element) root.elements("书").get(1);
String value = book.element("书名").getText();
System.out.println(value);
}
@Test
public void readAttr() throws DocumentException {
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml");
Element root = document.getRootElement();
Element book = (Element) root.elements("书").get(1);
String value = book.element("书名").attributeValue("name");
System.out.println(value);
}
@Test
public void add() throws Exception {
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml");
Element book = document.getRootElement().element("书");
book.addElement("售价").setText("107元");
OutputFormat format = OutputFormat.createCompactFormat();
format.setEncoding("gb2312");
XMLWriter write = new XMLWriter(new FileOutputStream("src/book.xml"),
format);
write.write(document);
write.close();
}
@Test
@SuppressWarnings("unchecked")
public void add1() throws Exception {
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml");
Element book = (Element) document.getRootElement().elements("书").get(1);
List<Element> list = book.elements();
Element price = DocumentHelper.createElement("售价");
price.setText("122元");
list.add(2, price);
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),
format);
writer.write(document);
writer.close();
}
@Test
public void delete() throws Exception {
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml");
Element element = (Element) document.getRootElement().elements("书")
.get(1);
Element price = (Element) element.elements("售价").get(1);
price.getParent().remove(price);
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),
format);
writer.write(document);
writer.close();
}
@Test
public void update() throws Exception {
SAXReader reader = new SAXReader();
Document document = reader.read("src/book.xml");
Element element = (Element) document.getRootElement().elements("书")
.get(1);
Element price = (Element) element.elements("售价").get(0);
price.setText("15");
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
XMLWriter writer = new XMLWriter(new FileOutputStream("src/book.xml"),
format);
writer.write(document);
writer.close();
}
}
<?xml version="1.0" encoding="UTF-8"?>
<users>
<user id="1" username="aaa" passwork="123" email="a@sina.com" >用户一</user>
<user id="2" username="abb" passwork="132" email="b@sina.com" />
<user id="3" username="bbb" passwork="312" email="c@sina.com" />
</users>
package org.example.dom4j;
import org.dom4j.Document;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import org.w3c.dom.NodeList;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;
public class UsersXpathDemo {
public static void main(String[] args) throws Exception {
String username="aaa";
String passwork="123";
SAXReader reader=new SAXReader();
Document document=reader.read("E:/workspace/my/spring/mybatisParse/src/main/java/org/example/dom4j/users.xml");
Node node=document.selectSingleNode("//user[@username='"+username+"' and @passwork='"+passwork+"']");
System.out.println(node.getText());
if(node==null){
System.out.println("输入错误");
}
else{
System.out.println("登陆成功");
}
}
}
jaxp-dom
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE 书架 SYSTEM "book.dtd">
<书架>
<书>
<书名 name="yyy"> javaee</书名>
<作者> 老王 </作者>
<售价>120元</售价>
</书>
<书>
<书名 name="xxx"> javase</书名>
<作者> 老张 </作者>
<售价>128元</售价>
</书>
</书架>
package org.example.jaxp.dom;
import java.io.FileOutputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.junit.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class Demo {
@Test
public void read() throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder buider = factory.newDocumentBuilder();
Document document = buider.parse("src/main/java/org/example/jaxp/dom/book.xml");
NodeList list = document.getElementsByTagName("书名");
Node node = list.item(0);
String Content = node.getTextContent();
System.out.println(Content);
}
@Test
public void read1() throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder buider = factory.newDocumentBuilder();
Document document = buider.parse("src/main/java/org/example/jaxp/dom/book.xml");
Node root = document.getElementsByTagName("书架").item(0);
list(root);
}
private void list(Node node) {
if (node instanceof Element) {
System.out.println(node.getNodeName());
}
NodeList list = node.getChildNodes();
for (int i = 0; i < list.getLength(); i++) {
Node child = list.item(i);
list(child);
}
}
@Test
public void read2() throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder buider = factory.newDocumentBuilder();
Document document = buider.parse("src/main/java/org/example/jaxp/dom/book.xml");
Element bookName = (Element) document.getElementsByTagName("书名")
.item(0);
String value = bookName.getAttribute("name");
System.out.println(value);
}
@Test
public void add() throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder buider = factory.newDocumentBuilder();
Document document = buider.parse("src/main/java/org/example/jaxp/dom/book.xml");
Element price = document.createElement("售价");
price.setTextContent("18.5元");
Element book = (Element) document.getElementsByTagName("书").item(0);
book.appendChild(price);
TransformerFactory tfffactory = TransformerFactory.newInstance();
Transformer tf = tfffactory.newTransformer();
tf.transform(new DOMSource(document), new StreamResult(
new FileOutputStream("src/main/java/org/example/jaxp/dom/book.xml")));
}
@Test
public void add1() throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder buider = factory.newDocumentBuilder();
Document document = buider.parse("src/main/java/org/example/jaxp/dom/book.xml");
Element price = document.createElement("售价");
price.setTextContent("18.5元");
Element refNode = (Element) document.getElementsByTagName("售价").item(0);
Element book = (Element) document.getElementsByTagName("书").item(0);
book.insertBefore(price, refNode);
TransformerFactory tfffactory = TransformerFactory.newInstance();
Transformer tf = tfffactory.newTransformer();
tf.transform(new DOMSource(document), new StreamResult(
new FileOutputStream("src/main/java/org/example/jaxp/dom/book.xml")));
}
@Test
public void addAtt() throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder buider = factory.newDocumentBuilder();
Document document = buider.parse("src/main/java/org/example/jaxp/dom/book.xml");
Element book = (Element) document.getElementsByTagName("书名").item(0);
book.setAttribute("name", "xxx");
TransformerFactory tfffactory = TransformerFactory.newInstance();
Transformer tf = tfffactory.newTransformer();
tf.transform(new DOMSource(document), new StreamResult(
new FileOutputStream("src/main/java/org/example/jaxp/dom/book.xml")));
}
@Test
public void delete() throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder buider = factory.newDocumentBuilder();
Document document = buider.parse("src/main/java/org/example/jaxp/dom/book.xml");
Element e = (Element) document.getElementsByTagName("售价").item(0);
Element books = (Element) document.getElementsByTagName("书").item(0);
books.removeChild(e);
TransformerFactory tfffactory = TransformerFactory.newInstance();
Transformer tf = tfffactory.newTransformer();
tf.transform(new DOMSource(document), new StreamResult(
new FileOutputStream("src/main/java/org/example/jaxp/dom/book.xml")));
}
@Test
public void delete1() throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder buider = factory.newDocumentBuilder();
Document document = buider.parse("src/main/java/org/example/jaxp/dom/book.xml");
Element e = (Element) document.getElementsByTagName("售价").item(0);
e.getParentNode().removeChild(e);
TransformerFactory tfffactory = TransformerFactory.newInstance();
Transformer tf = tfffactory.newTransformer();
tf.transform(new DOMSource(document), new StreamResult(
new FileOutputStream("src/main/java/org/example/jaxp/dom/book.xml")));
}
@Test
public void delete2() throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder buider = factory.newDocumentBuilder();
Document document = buider.parse("src/main/java/org/example/jaxp/dom/book.xml");
Element e = (Element) document.getElementsByTagName("售价").item(0);
e.getParentNode().getParentNode().getParentNode()
.removeChild(e.getParentNode().getParentNode());
TransformerFactory tfffactory = TransformerFactory.newInstance();
Transformer tf = tfffactory.newTransformer();
tf.transform(new DOMSource(document), new StreamResult(
new FileOutputStream("src/main/java/org/example/jaxp/dom/book.xml")));
}
@Test
public void update() throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder buider = factory.newDocumentBuilder();
Document document = buider.parse("src/main/java/org/example/jaxp/dom/book.xml");
Element e = (Element) document.getElementsByTagName("售价").item(0);
e.setTextContent("18.88元");
TransformerFactory tfffactory = TransformerFactory.newInstance();
Transformer tf = tfffactory.newTransformer();
tf.transform(new DOMSource(document), new StreamResult(
new FileOutputStream("src/main/java/org/example/jaxp/dom/book.xml")));
}
}
jaxp-sax
package org.example.jaxp.sax;
import lombok.Data;
@Data
public class Book {
private String bookName;
private String author;
private String Price;
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getPrice() {
return Price;
}
public void setPrice(String price) {
Price = price;
}
}
package org.example.jaxp.sax;
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
public class Demo1 {
public static void main(String[] args) throws ParserConfigurationException,
SAXException, IOException {
SAXParserFactory factry = SAXParserFactory.newInstance();
SAXParser sp = factry.newSAXParser();
XMLReader reader = sp.getXMLReader();
reader.setContentHandler(new ListHarder());
reader.parse("E:/workspace/my/spring/mybatisParse/src/main/java/org/example/jaxp/dom/book.xml");
}
}
class ListHarder implements ContentHandler {
@Override
public void startElement(String uri, String localName, String qName,
Attributes atts) throws SAXException {
System.out.println("<" + qName + ">");
for(int i=0;atts!=null&&i<atts.getLength();i++){
String attsName=atts.getQName(i);
String attsValue=atts.getValue(i);
System.out.println(attsName+" "+attsValue);
}
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
System.out.println(new String(ch, start, length));
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
System.out.println("</" + qName + ">");
}
@Override
public void setDocumentLocator(Locator locator) {
}
@Override
public void startDocument() throws SAXException {
}
@Override
public void endDocument() throws SAXException {
}
@Override
public void startPrefixMapping(String prefix, String uri)
throws SAXException {
}
@Override
public void endPrefixMapping(String prefix) throws SAXException {
}
@Override
public void ignorableWhitespace(char[] ch, int start, int length)
throws SAXException {
}
@Override
public void processingInstruction(String target, String data)
throws SAXException {
}
@Override
public void skippedEntity(String name) throws SAXException {
}
}
package org.example.jaxp.sax;
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
public class Demo2 {
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
SAXParserFactory factry = SAXParserFactory.newInstance();
SAXParser sp = factry.newSAXParser();
XMLReader reader = sp.getXMLReader();
reader.setContentHandler(new TagValueHandler());
reader.parse("E:/workspace/my/spring/mybatisParse/src/main/java/org/example/jaxp/dom/book.xml");
}
}
class TagValueHandler extends DefaultHandler{
private String currentTag;
private int needNumver=1;
private int currentNumber;
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
currentTag=qName;
if(currentTag.equals("作者")){
currentNumber++;
}
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
if(currentTag.equals("作者")&¤tNumber==needNumver){
System.out.println(new String(ch,start,length));
}
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
currentTag=null;
}
}
package org.example.jaxp.sax;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.example.jaxp.sax.Book;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
public class Demo3 {
public static void main(String[] args) throws ParserConfigurationException,
SAXException, IOException {
SAXParserFactory factry = SAXParserFactory.newInstance();
SAXParser sp = factry.newSAXParser();
XMLReader reader = sp.getXMLReader();
BeanListHandler br = new BeanListHandler();
reader.setContentHandler(br);
reader.parse("E:/workspace/my/spring/mybatisParse/src/main/java/org/example/jaxp/dom/book.xml");
List<Book> book=br.getList();
book.forEach(k-> System.out.println(k.toString()));
}
}
class BeanListHandler extends DefaultHandler {
private String currentTag;
private List<Book> list = new ArrayList<Book>();
private Book book;
public List<Book> getList() {
return list;
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
currentTag=qName;
if("书".equals(currentTag)){
book=new Book();
}
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
if("书名".equals(currentTag)){
String bookName=new String(ch,start,length);
book.setBookName(bookName);
}
if("作者".equals(currentTag)){
String author=new String(ch,start,length);
book.setAuthor(author);
}
if("售价".equals(currentTag)){
String price=new String(ch,start,length);
book.setPrice(price);
}
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
if("书".equals(qName)){
list.add(book);
book=null;
}
currentTag=null;
}
}