XML1(Xpath有點暈,單獨搞一章)

xml小結:

1.XML是可擴展標記語言。

2.功能:

#1.數據共享,防止代碼寫死。修改源程序,把需要修改的東西放在一個文件裏,     稱爲配置文件,程序儘量不要改動,改就改在配置文件內容,比如修改聊天室     的 端口。

#2.數據傳輸
3.開頭的xml指令是給解析引擎看的,同時內容部分爲了防止大量寫實體引用,可讀性會很差,
CDATA塊裏面是純文本:格式爲<![CDATA[.....裏面是純文本......]]>

4. maven項目是寫程序要是用第三方里面的API,要導進來java的壓縮包(jar包)

阿帕奇組織進行整理jar包jar包的繁瑣的依賴關係

5.解析方式:
1.SAX:解析快,佔用內存小,但是沒法改變節點
2.DOM:解析慢,佔用內存多,可以遍歷和修改節點
   兩者有點互補

6.xml文件與java集合中Emp實例的互轉操作(重點),別忘導包需要dom4j.

@1XML轉化Emp實例存入List集合
1.創建SAXReader,讀取後返回Document對象
  (DOM消耗資源的體現,他將讀取到的Document存於內存,對象描述XML文檔容)
2.根據對象獲取根元素,按照xml的結構從根獲取子元素屬性的目的

 @2List集合寫出XML文檔的步驟:
1.創建一個Document對象表示一個空白的xml文檔
2.向Document對象中添加根元素
3.按照生成的xml文檔的格式逐級向根元素添加子元素形成xml文檔格式
4.創建XmlWriter
5.通過XmlWriter將Document寫出

**************************************************************************************************

自己寫好的Emp實例,很簡單
public class Emp {
private int id;
private String name;
private int age;
private String gender;
private int salary;
public Emp(){}
public Emp(int id, String name, int age, String gender, int salary) {
super();
this.id = id;
this.name = name;
this.age = age;
this.gender = gender;
this.salary = salary;
}
public String toString() {
return "Emp [id=" + id + ", name=" + name + ", age=" + age + ", gender=" + gender + ", salary=" + salary + "]";
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
}

*************************************************************************************************************************************************************************************

public class ParseXmlDemo {
public static void main(String[] args) {
try {
SAXReader reader=new SAXReader();
Document doc=reader.read(new FileInputStream("emplist.xml"));
Element root=doc.getRootElement();


List<Emp> empList=new ArrayList();
List<Element> elements=root.elements();

for(Element empEle:elements){
//獲取名字
Element nameEle=empEle.element("name");
String name=nameEle.getText();
//獲取年齡
int age=Integer .parseInt(empEle.elementTextTrim("age"));
//獲取性別
String gender=empEle.elementText("gender");
//獲取薪資
int  salary=Integer.parseInt(empEle.elementTextTrim("salary"));
//1.String getName();屬性名
//2.String getValue();屬性值
Attribute attr=empEle.attribute("id");
int id=Integer.parseInt(attr.getValue());
Emp emp=new Emp(id,name,age,gender,salary);
empList.add(emp);
}
System.out.println("解析完畢!");
System.out.println("共"+empList.size()+"個員工");
for(Emp emp:empList){
System.out.println(emp);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
**************************************************************************************
// 使用DOM生成xml文檔
public class WriteXmlDemo {
public static void main(String[] args) {
List<Emp> empList=new ArrayList<Emp>();
empList.add(new Emp(1,"張三",23,"男",3000));
empList.add(new Emp(1,"張三",23,"男",3000));
empList.add(new Emp(1,"張三",23,"男",3000));
empList.add(new Emp(1,"張三",23,"男",3000));
empList.add(new Emp(1,"張三",23,"男",3000));
XMLWriter writer=null;
try {
Document document=DocumentHelper.createDocument();
Element root=document.addElement("list");
for(Emp emp:empList){
Element empEle=root.addElement("emp");
//添加子標籤name
Element nameEle=empEle.addElement("name");
nameEle.addText(emp.getName());
//添加age
empEle.addElement("age").addText(emp.getAge()+"");
//添加性別
empEle.addElement("gender").addText(emp.getGender());
//添加工資
empEle.addElement("salary").addText(emp.getSalary()+"");
//添加屬性
empEle.addAttribute("id",emp.getId()+"");
}
FileOutputStream fos=new FileOutputStream("myemp.xml");
writer=new XMLWriter(fos,OutputFormat.createPrettyPrint());
writer.write(document);
System.out.println("寫出完畢");
} catch (Exception e) {
e.printStackTrace();
}finally{
if(writer!=null){
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章