XML解析
发布时间:2020-12-16 00:12:44 所属栏目:百科 来源:网络整理
导读:理解XML的解析,首先要理解什么是XML. XML语言 XML,即可扩展性标记语言。首先它是一种语言,是用于传输数据的语言而不是用于显示数据的语言,理解这一点很关键。大家可能都比较理解什么是HTML语言,HTML是用于显示网页的一种语言,用于显示数据,这是XML与
理解XML的解析,首先要理解什么是XML. XML语言 XML,即可扩展性标记语言。首先它是一种语言,是用于传输数据的语言而不是用于显示数据的语言,理解这一点很关键。大家可能都比较理解什么是HTML语言,HTML是用于显示网页的一种语言,用于显示数据,这是XML与其的不同点。因此我们也可以知道XML并不是HTML的代替品。 DOMDOM解析的步骤:
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class TestDOM {
public static void main(String[] args) {
//创建解析器工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
//根据解析器工厂创建解析器
DocumentBuilder builder = factory.newDocumentBuilder();
//解析器解析文档
Document document = builder.parse("D:11.txt");
//解析文档的Weather标签。
NodeList list = document.getElementsByTagName("Weather");
//获得第一个weather标签。
Node node = list.item(0);
//获得第一个子标签。
Node firstNode = node.getFirstChild();
//获得下一个子标签。
Node nextNode = firstNode.getNextSibling();
while(nextNode!=null) {
//判断节点类型是否是ELEMENT_NODE
if(nextNode.getNodeType()==Node.ELEMENT_NODE){
Node content = nextNode.getFirstChild();
if(content!=null){
System.out.println(nextNode.getFirstChild().getNodeValue().trim());
}
}
nextNode = nextNode.getNextSibling();
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
SAXJSON对XML的解析:
import java.io.File;
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.SAXException;
public class TestSAX {
public static void main(String[] args) {
//创建SAXParserFactory实例
SAXParserFactory factory = SAXParserFactory.newInstance();
try {
//创建SAXParser实例
SAXParser parser = factory.newSAXParser();
//创建SAXParserHandler实例
MySAXHandler handler = new MySAXHandler();
//调用parser方法进行解析。
parser.parse(new File("D:11.txt"),handler);
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
创建SAXParserHandler类: import javax.xml.namespace.QName;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class MySAXHandler extends DefaultHandler{
private boolean isArrive = false;
//接收文档开始
@Override
public void startDocument() throws SAXException {
System.out.println("开始接受文档!");
super.startDocument();
}
//解析文档开始
@Override
public void startElement(String uri,String localName,String qName,Attributes attributes) throws SAXException {
super.startElement(uri,localName,qName,attributes);
isArrive = qName.equals("xcz");
System.out.println(qName);
}
//解析文档完成
@Override
public void endElement(String uri,String qName) throws SAXException {
super.endElement(uri,qName);
System.out.println(qName);
isArrive = false;
}
//接受文档完成
@Override
public void endDocument() throws SAXException {
System.out.println("接受文档完成!");
super.endDocument();
}
//内容
@Override
public void characters(char[] ch,int start,int length) throws SAXException {
super.characters(ch,start,length);
if(isArrive){
System.out.println("我终于找到你了"+new String(ch,length));
}
else{
System.out.println(new String(ch,length));
}
}
JSONJSON对XML的解析: import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class TestJSON {
public static void main(String[] args) {
String json = creatJSON();
JSONObject obj = JSONObject.fromObject(json);
//获得Object中city的内容
System.out.println(obj.getString("city"));
//获得第一的Object中Today Object的内容。
JSONObject today = obj.getJSONObject("today");
//
System.out.println(today.getString("date"));
JSONArray array = today.getJSONArray("index");
for (int i = 0; i < array.size(); i++) {
JSONObject index = array.getJSONObject(i);
System.out.println(index.getString("name"));
}
}
//创建一个XML文件。
private static String creatJSON() {
JSONObject obj = new JSONObject();
obj.put("city","北京");
obj.put("cityid","123");
//Object Today的内容。
JSONObject today = new JSONObject();
today.put("date","2015-08-03" );
today.put("week","星期一");
//Today中Array的内容
JSONArray array = new JSONArray();
JSONObject index1 = new JSONObject();
index1.put("name","感冒" );
JSONObject index2 = new JSONObject();
index2.put("name","防晒");
JSONObject index3= new JSONObject();
index3.put("name","炎热");
array.add(index1);
array.add(index2);
array.add(index3);
//将Array放入Today
today.put("index",array);
//将Today放入Object中
obj.put("today",today);
System.out.println(obj.toString());
return obj.toString();
}
}
其中creatJSON()方法生成的XML文档的内容为: {
"city":"北京","cityid":"123","today":{ "date":"2015-08-03","week":"星期一","index": [{"name":"感冒"},{"name":"防晒"},{"name":"炎热"}] } }
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |