xml创建:
ublic class CreateXMl {
public static void main(String[] args) throws Exception{
List<BookDemo> books = new ArrayList<BookDemo>();
for (int i = 0; i <3; i++) {
BookDemo bookDemo = new BookDemo();
bookDemo.setName("电脑"+i);
bookDemo.setNum(300+i);
bookDemo.setPrice(40.0+i);
bookDemo.setSi("000"+i);
books.add(bookDemo);
}
createDocument(books);
}
public static void createDocument(List<BookDemo> list)throws Exception{
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.newDocument();
//设置小毛驴的版本
document.setXmlVersion("1.0");
//xml是否可以单独存在
document.setXmlStandalone(true);
//向xml中添加根节点
Element elementRoot = document.createElement("books");
document.appendChild(elementRoot);
for (BookDemo bookDemo : list) {
//创建book节点
Element elementBook = document.createElement("book");
elementBook.setAttribute("si", bookDemo.getSi());
elementRoot.appendChild(elementBook);
//创建Name节点
Element elementName = document.createElement("name");
elementName.setTextContent(bookDemo.getName());
elementBook.appendChild(elementName);
//创建price节点
Element elementPrice = document.createElement("price");
elementPrice.setTextContent(bookDemo.getPrice().toString());
elementBook.appendChild(elementPrice);
//创建num节点
Element elementNum = document.createElement("num");
elementNum.setTextContent(bookDemo.getNum().toString());
elementBook.appendChild(elementNum);
}
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
Source xmlSource = new DOMSource(document);
// Result outputTarget = new StreamResult(new File("D:\\JavaProject\\itCast\\src\\main\\com\\itcast\\MyFiles.xml"));
Result outputTarget = new StreamResult(new OutputStreamWriter(new FileOutputStream(new File("D:\\JavaProject\\itCast\\src\\main\\com\\itcast\\MyFiles.xml")),"UTF-8"));
transformer.transform(xmlSource, outputTarget);
}
}
xml操作:
public class XMLOpreraor {
/**
* 读取xml文件中的数据,返回对象形式的list
*
*/
public List<BookDemo> list() throws Exception{
List<BookDemo> list = new ArrayList<BookDemo>();
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.parse(new File("D:\\JavaProject\\itCast\\src\\main\\com\\itcast\\MyFile.xml"));
NodeList nodeList = document.getElementsByTagName("book");
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
if (node.getNodeType()==Node.ELEMENT_NODE) {
Element element = (Element)node;
BookDemo bookDemo = new BookDemo();
bookDemo.setName(element.getElementsByTagName("name").item(0).getTextContent());
bookDemo.setPrice(Double.parseDouble(element.getElementsByTagName("price").item(0).getTextContent()));
bookDemo.setNum(Integer.parseInt(element.getElementsByTagName("num").item(0).getTextContent()));
list.add(bookDemo);
}
}
return list;
}
/**
* 将bookDemo对象保存到xml中
* @param bookDemo
*/
public void save(BookDemo bookDemo)throws Exception{
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.parse(new File("D:\\JavaProject\\itCast\\src\\main\\com\\itcast\\MyFile.xml"));
//获得根节点
Element rootEl = document.getDocumentElement();
//创建book节点
Element element= document.createElement("book");
element.setAttribute("si", bookDemo.getSi());
//将创建的节点绑定到根节点
rootEl.appendChild(element);
//创建name节点
Element element1 = document.createElement("name");
element1.setTextContent(bookDemo.getName());
//将element1节点绑定到Element节点
element.appendChild(element1);
//创建price节点
Element element2 = document.createElement("price");
element2.setTextContent(bookDemo.getPrice().toString());
//将element1节点绑定到Element节点
element.appendChild(element2);
//创建num节点
Element element3 = document.createElement("num");
element3.setTextContent(bookDemo.getNum().toString());
//将element1节点绑定到Element节点
element.appendChild(element3);
/**
* 将内存中的数据输出到xml文件中
*/
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
Source xmlSource = new DOMSource(document);
Result outputTarget = new StreamResult("D:\\JavaProject\\itCast\\src\\main\\com\\itcast\\MyFile.xml");
transformer.transform(xmlSource, outputTarget);
}
/**
* 删除特定si的BookDemo对象
* @param si
*/
public void remove(String si)throws Exception{
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.parse("D:\\JavaProject\\itCast\\src\\main\\com\\itcast\\MyFile.xml");
NodeList nodeList =document.getElementsByTagName("book");
for (int i = 0; i < nodeList.getLength(); i++) {
Element node = (Element)nodeList.item(i);
//如果找到的book的si等于传递过来的si,就执行删除操作
if (si.equals(node.getAttribute("si"))) {
node.getParentNode().removeChild(node);
break;
}
}
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
Source xmlSource = new DOMSource(document);
Result outputTarget = new StreamResult("D:\\JavaProject\\itCast\\src\\main\\com\\itcast\\MyFile.xml");
transformer.transform(xmlSource, outputTarget);
}
/**
*
* 根据特定si改动xml
* @param si
*/
public void update(String si,BookDemo bookDemo)throws Exception{
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.parse("D:\\JavaProject\\itCast\\src\\main\\com\\itcast\\MyFile.xml");
NodeList nodeList =document.getElementsByTagName("book");
for (int i = 0; i < nodeList.getLength(); i++) {
Element element= (Element)nodeList.item(i);
if (si.equals(element.getAttribute("si"))) {
element.getElementsByTagName("name").item(0).setTextContent(bookDemo.getName());
element.getElementsByTagName("price").item(0).setTextContent(bookDemo.getPrice().toString());
element.getElementsByTagName("num").item(0).setTextContent(bookDemo.getNum().toString());
break;
}
}
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
Source xmlSource = new DOMSource(document);
Result outputTarget = new StreamResult("D:\\JavaProject\\itCast\\src\\main\\com\\itcast\\MyFile.xml");
transformer.transform(xmlSource, outputTarget);
}
public static void main(String[] args) throws Exception{
XMLOpreraor xmlOpreraor = new XMLOpreraor();
// List<BookDemo> li = xmlOpreraor.list();
// System.out.println(li);
/*BookDemo bookDemo = new BookDemo();
bookDemo.setName("地理");
bookDemo.setNum(112);
bookDemo.setPrice(25.0);
bookDemo.setSi("004");
xmlOpreraor.save(bookDemo);*/
// xmlOpreraor.remove("004");
BookDemo bookDemo1 = new BookDemo();
bookDemo1.setName("地理");
bookDemo1.setNum(112);
bookDemo1.setSi("001");
bookDemo1.setPrice(25.0);
xmlOpreraor.update("001", bookDemo1);
}
}
sax解析xml:
public class Test {
public static void main(String[] args) throws Exception{
//引进SAXParserFactory工厂
SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
SAXParser saxParser = saxParserFactory.newSAXParser();
//引进一个xml阅读器
XMLReader xmlReader = saxParser.getXMLReader();
xmlReader.setContentHandler(new MyHandler());
/*List<BookDemo> list = new ArrayList<BookDemo>();
saxParser.parse(new File("D:\\JavaProject\\itCast\\src\\main\\com\\itcast\\MyFile.xml"), new MyHandler(list));
for (BookDemo bookDemo : list) {
System.out.println(bookDemo);
}*/
}
static class MyHandler implements ContentHandler{
@Override
public void setDocumentLocator(Locator locator) {
// TODO Auto-generated method stub
}
@Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
}
@Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
}
@Override
public void startPrefixMapping(String prefix, String uri)
throws SAXException {
// TODO Auto-generated method stub
}
@Override
public void endPrefixMapping(String prefix) throws SAXException {
// TODO Auto-generated method stub
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes atts) throws SAXException {
// TODO Auto-generated method stub
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
// TODO Auto-generated method stub
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
}
@Override
public void ignorableWhitespace(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
}
@Override
public void processingInstruction(String target, String data)
throws SAXException {
// TODO Auto-generated method stub
}
@Override
public void skippedEntity(String name) throws SAXException {
// TODO Auto-generated method stub
}
}
/*
// List<BookDemo> list = new ArrayList<BookDemo>();
private List<BookDemo> list;
*//**
* 定义一个构造函数,初始化类
* @param list
*//*
public MyHandler(List<BookDemo> list) {
super();
this.list = list;
}
BookDemo bookdemo = null;
private String currentString = null;
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
//System.out.println("-----------"+qName);
if ("book".equals(qName)) {
bookdemo = new BookDemo();
list.add(bookdemo);
bookdemo.setSi(attributes.getValue("si"));
}else if ("name".equals(qName)) {
currentString = "name";
}else if ("price".equals(qName)) {
currentString = "price";
}else if("num".equals(qName)){
currentString = "num";
}
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
currentString = null;
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
//str表示xml中的属性的值
String str = new String(ch, start, length);
//currentString在上面定义了,保存了特定的值
if ("name".equals(currentString)) {
bookdemo.setName(str);
}else if ("price".equals(currentString)) {
bookdemo.setPrice(Double.parseDouble(str));
}else if ("num".equals(currentString)) {
bookdemo.setNum(Integer.parseInt(str));
}
}
}*/
}
xml解析
最新推荐文章于 2021-05-26 22:37:30 发布