XML (Extensible Markup Language 可扩展标记语言)
1,XML是一种标记语言,很像HTML;
2,XML的设计宗旨是传输数据,而非显示数据;
3,XML标签没有被预定义,需要自定义标签;
4,XML被设计为具有自我描述性;
5,XML是W3C的推荐标准;
XML和HTML的不同:XML焦点是数据内容,传输信息;HTML焦点是外观,显示信息;
XML语法规则
省略关闭标签是非法的,所有元素都必须有关闭标签
xml 标签对大小写敏感
xml 必须正确嵌套
xml 文档必须有根元素
xml 的属性值必须加引号
xml 中,空格会被保留
示例:
使用java读取XML
创建一个示例xml:
<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8" ?>
<languages cat="it">
<lan id="1">
<name>Java</name>
<ide>Intellij IDEA</ide>
</lan>
<lan id="2">
<name>Swift</name>
<ide>Xcode</ide>
</lan>
<lan id="3">
<name>C#</name>
<ide>Visual Studio</ide>
</lan>
</languages></span>
读取xml类:
<span style="font-size:18px;">import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.File;
import java.io.IOException;
/**
* Created by MaFei on 2016/6/12 0012.
*/
public class ReadXml {
//DOM方式解析xml
public static void main(String[] args) {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
//使用builder解析xml文档
Document document = builder.parse(new File("languages.xml"));
Element root = document.getDocumentElement();//获取文档根元素,即languages标签
//查看languags标签中的属性
System.out.println("语言类型 cat : " + root.getAttribute("cat"));
NodeList list = root.getElementsByTagName("lan");//获取lan标签集合
//循环遍历lan标签
for (int i = 0; i < list.getLength(); i++){
Element lan = (Element) list.item(i);
System.out.println("-------------");
System.out.println("id = " + lan.getAttribute("id"));
//获取lan下所有子节点
NodeList cList = lan.getChildNodes();
for (int j = 0; j < cList.getLength(); j++){
Node c = cList.item(j);
if (c instanceof Element){
//查看节点标签名和标签中的内容
System.out.println(c.getNodeName() + " = " + c.getTextContent());
}
}
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}</span>
java创建XML
<span style="font-size:18px;">import org.w3c.dom.Document;
import org.w3c.dom.Element;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.File;
import java.io.StringWriter;
/**
* Created by MaFei on 2016/6/12 0012.
*/
public class CreateXML {
public static void main(String[] args) {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
//创建xml
Document document = builder.newDocument();
//创建根节点并添加属性
Element root = document.createElement("Languages");
root.setAttribute("cat","it");
Element lan1 = document.createElement("lan");
lan1.setAttribute("id", "1");
Element name1 = document.createElement("name");
Element ide1 = document.createElement("ide");
name1.setTextContent("Java");
ide1.setTextContent("Intellij IDEA");
//将子节点添加进父节点
lan1.appendChild(name1);
lan1.appendChild(ide1);
root.appendChild(lan1);
document.appendChild(root);
//----文档内容创建完毕,将xml文档转换成其他格式
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
StringWriter writer = new StringWriter();
transformer.transform(new DOMSource(document), new StreamResult(writer));
//查看生成的String
System.out.println(writer.toString());
//生成文件
transformer.transform(new DOMSource(document), new StreamResult(new File("new xml")));
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
}
}</span>
最后感谢Acely老师的精彩讲解!