序:很久没有用到XML了,很多东西都忘记了。最近重温了下,在这里记录下笔记。
1.XML(Extensible Mark Language)
(1)标准通用标记语言的子集
(2)用于标记电子文件使其具有结构性的标记语言
(3)适合万维网传输
(4)标记数据,定义数据类型,允许用户自定义自己的标记语言的源语言
2.设计宗旨
(1)传输数据而非显示数据
(2)XML仅仅为纯文本
3.与HTML的不同点
(1)XML用于传输存储数据,焦点在数据的内容。
(2)HTML用于显示数据,焦点在数据的外观
4.规则
(1)大小写敏感(2)正确嵌套(3)必须要有根元素(4)属性值必须加引号
(5)空格会被保留(6)不允许省略关闭标签
5.使用Java提供的API读取XML文件
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = documentBuilderFactory.newDocumentBuilder();
Document document = builder.parse(new File("src/test.xml"));
Element root = document.getDocumentElement();
NodeList nodeList = root.getElementsByTagName("lan");
for(int i = 0;i < nodeList.getLength();i++){
Element element = (Element) nodeList.item(i);
System.out.println(element.getTagName());
NodeList childs = element.getChildNodes();
for(int j = 0;j < childs.getLength();j++){
/*这里的childs.item(i)返回的Node不能转化为Element*/
Node child = childs.item(j);
/*防止出现#Text问题*/
if(child instanceof Element)
System.out.println(" "+child.getNodeName());
}
}
6.使用JAVA提供的API创建XML文件
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = documentBuilderFactory.newDocumentBuilder();
/*创建新的document*/
Document document = builder.newDocument();
/*创建根结点*/
Element root = document.createElement("Languages");
root.setAttribute("cat","it");
Element firstChild = document.createElement("lan");
firstChild.setAttribute("id","1");
Element firstChildName = document.createElement("name");
firstChildName.setTextContent("java");
Element firstChildIde = document.createElement("ide");
firstChildIde.setTextContent("Eclipse");
firstChild.appendChild(firstChildName);
firstChild.appendChild(firstChildIde);
root.appendChild(firstChild);
/*注意*/
document.appendChild(root);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
StringWriter writer = new StringWriter();
transformer.transform(new DOMSource(document),new StreamResult(writer));
System.out.println(writer);