XML
可擴展的標記語言
作用:1、存儲、交換數據
2、配置
1、語言規範:
1)、必須有XML文檔聲明
2)、必須有且僅有一個根元素
3)、嚴格區分大小寫
4)、屬性值用引號(雙引號或單引號):等號分開的名稱-值對;在一個元素上,相同2的屬性只能出現一次
5)、標記成對
6)、空標記關閉
7)、元素正確嵌套
2、元素命名規則
1)、名稱中可以包含字母、數字或者其他可見字符;
2)、名稱不能以數字開頭;
3)、不能以 XML/xml/Xml…開頭;
4)、名稱中不能含空格;
5)、名稱中不能含冒號(注:冒號留給命名空間使用)
XML解析:
1、DOM解析
public static void createXml() throws Exception{
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
Document doc=builder.newDocument();
Element root=doc.createElement("people");
Element person=doc.createElement("person");
Element name=doc.createElement("name");
Element age=doc.createElement("age");
name.appendChild(doc.createTextNode("shsxt"));
age.appendChild(doc.createTextNode("10"));
doc.appendChild(root);
root.appendChild(person);
person.appendChild(name);
person.appendChild(age);
TransformerFactory tsf=TransformerFactory.newInstance();
Transformer ts=tsf.newTransformer();
www.shsxt.com
ts.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
DOMSource source=new DOMSource(doc);
File file=new File("src/output.xml");
StreamResult result=new StreamResult(file);
ts.transform(source, result);
}
2、DOM4J解析
public class Dom4JReader {
public static void main(String[] args) throws Exception {
File file = new File("src/test.xml");
SAXReader reader = new SAXReader();
Document document = reader.read(file);
Element root = document.getRootElement();
Iterator<Element> iterator = root.elementIterator();
while(iterator.hasNext()) {
Element el = iterator.next();
System.out.println(el.getName());
System.out.println(el.getText());
}
}
}
public class Dom4JWriter {
public static void main(String[] args) throws Exception {
Document document = DocumentHelper.createDocument();
Element person = document.addElement("person");
Element name = person.addElement("name");
Element age = person.addElement("age");
name.setText("shsxt");
age.setText("10");
OutputFormat of = OutputFormat.createPrettyPrint();
of.setEncoding("utf-8");
File file = new File("src/outputdom4j.xml");
XMLWriter writer = new XMLWriter(new FileOutputStream(new File(file.getAbsolutePath())),of);
writer.write(document);
writer.flush();
writer.close();
}
}