XML

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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值