xml的设计宗旨是传输数据,而非显示数据
xml文件格式:
<?xml version="1.0" encoding="GB2312" standalone="no"?>
<专有名词列表>
<专有名词>
<名词></名词>
<解释></解释>
<示例></示例>
</专有名词>
</专有名词列表>
xml文件解析方法:
xml应用:
数据交换
数据发布
数据显示
DTD文件类型定义
<!DOCTYPE student[
<!ELEMENT student (sid,sname,address,lianxi,age,aaa)>
<!ELEMENT sid (#PCDATA)>
<!ELEMENT sname (#PCDATA)>
<!ELEMENT address (item*)>
<!ELEMENT item (#PCDATA)>
<!ELEMENT lianxi (email|tele)>
<!ELEMENT age empty>
<!ELEMENT aaa any>
]>
<!--* 表示0或多个-->
<!--+ 表示1或多个-->
<!--? 表示0或1个-->
<!--| 表示或-->
<stduent>
<sid>21</sid>
<sname>张三</sname>
<address>
<item>西安市</item>
<item>汉中市</item>
<item>安康市</item>
</address>
<lianxi>
<email>152</email>
</lianxi>
<age></age>
<aaa>
</aaa>
</student>
属性声明:
<!--
#REQUIRED 表示必须要有的属性
#IMPLIED 表示可有可无的属性
#FIXED 表示确定的一个缺省值 即使不赋值,标记也有此默认的值 SEE
-->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE student [
<!ELEMENT student (img,im)>
<!ELEMENT img ANY>
<!ATTLIST img
src CDATA #REQUIRED
width CDATA #FIXED "200"
heigth CDATA #IMPLIED
>
<!ELEMENT im EMPTY>
<!ATTLIST im
src CDATA #REQUIRED
width CDATA #FIXED "200"
heigth CDATA #IMPLIED
>
]>
<student>
<img src="moc.png" heigth="300" width="200"></img>
<im src=""/>
</student>
属性外部声明:
dtd文件:dtd5.dtd
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT student (img,im)>
<!ELEMENT img ANY>
<!ATTLIST img
src CDATA #REQUIRED
width CDATA #FIXED "200"
heigth CDATA #IMPLIED
>
<!ELEMENT im EMPTY>
<!ATTLIST im
src CDATA #REQUIRED
width CDATA #FIXED "200"
heigth CDATA #IMPLIED
>
XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE student SYSTEM "dtd5.dtd">
<student>
<img src="moc.png" heigth="300" width="200"></img>
<im src=""/>
</student>
xml解析器:
public class XML解析器 {
public static void main(String[] args) {
//read();
write();
}
public static void read()
{
//获得解析器工厂
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
//获取解析器
try
{
DocumentBuilder builder=factory.newDocumentBuilder();
Document document=builder.parse("table.xml");
NodeList list=document.getElementsByTagName("student");
for(int i=0;i<list.getLength();i++)
{
Element element=(Element)list.item(i);
// System.out.println(element.getElementsByTagName("name").item(0).getTextContent());
System.out.println(element.getElementsByTagName("name").item(0).getFirstChild().getNodeValue());
System.out.println(element.getElementsByTagName("age").item(0).getTextContent());
System.out.println(element.getElementsByTagName("address").item(0).getTextContent());
}
}
catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void write()
{
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
try
{
DocumentBuilder builder=factory.newDocumentBuilder();
Document doc=builder.newDocument();
Element students=doc.createElement("students");
Element student=doc.createElement("student");
Element age=doc.createElement("age");
Element name=doc.createElement("name");
Element address=doc.createElement("address");
name.setTextContent("zhansan");
age.setTextContent("20");
address.setTextContent("西安市");
/*name.setTextContent("李四");
age.setTextContent("120");
address.setTextContent("西安市");*/
student.appendChild(name);
student.appendChild(age);
student.appendChild(address);
students.appendChild(student);
doc.appendChild(students);
//换的转换工厂
TransformerFactory trans=TransformerFactory.newInstance();
try
{
//获得转换器
Transformer tf=trans.newTransformer();
tf.setOutputProperty(OutputKeys.INDENT,"yes");//换行
tf.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");//缩进4个
tf.transform(new DOMSource(doc),new StreamResult(new File("add.xml")));
}
catch (Exception e)
{
e.printStackTrace();
}
}
catch (ParserConfigurationException e)
{
e.printStackTrace();
}
}
}
table.xml放在工程根目录下:
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student>
<name>张三</name>
<age>20</age>
<address>西安市</address>
</student>
<student>
<name>李四</name>
<age>21</age>
<address>西安市</address>
</student>
<student>
<name>张三</name>
<age>22</age>
<address>西安市</address>
</student>
</students>
XML
最新推荐文章于 2025-06-23 14:51:46 发布