当前位置:编程学习 > XML/UML >>

javaWeb 学习之旅(二)--------XML的使用方法

二、xml的使用方法
 1.最简单的声明语法:
<?xml version="1.0"?>

常用的方法有:<?xml version="1.0" encoding="UTF-8"?>或者<?xml version="1.0" encoding="GB2312"?>

还有一个属性:说明文档是否独立      standalone="yes"

CDATA区: xml解析程序不会处理,按原样输出,语法如下: <![CDATA[内容]]>

2.DTD约束

book.xml

[html]
<?xml version="1.0" encoding="UTF-8"?> 
 
 
<!DOCTYPE 书架 SYSTEM "book.dtd"> 
 
<书架> 
    <书> 
        <书名> 数据结构</书名> 
        <作者> 某某某</作者> 
    </书> 
    <书> 
        <书名> 大学语文</书名> 
        <作者> 某某某</作者> 
    </书> 
</书架> 

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE 书架 SYSTEM "book.dtd">

<书架>
 <书>
  <书名> 数据结构</书名>
  <作者> 某某某</作者>
 </书>
 <书>
  <书名> 大学语文</书名>
  <作者> 某某某</作者>
 </书>
</书架>book.dtd

[plain] view plaincopyprint?<!ELEMENT 书架(书+)> 
 
<!ELEMENT 书 (书名,作者)> 
<!ELEMENT 书名 (#PCDATA)> 
<!ELEMENT 作者 (#PCDATA)> 

<!ELEMENT 书架(书+)>

<!ELEMENT 书 (书名,作者)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>

2.Dom和Sax解析方法的区别:
1.Dom 解析的优点,对文档的增、删、改、查、比较方便,缺点占用的内存较大

2.Sax解析的优点是占用内存少, 解析速度快,缺点是只适合做文档的读取,不适合做文档的增、删、改、查、

3.调整JVM的大小
             JVM默认的是64M的内存,超过之后,后抛出异常

            配置JVM的大小如下: run as  --Open   Run  Dialog -----------Argument----- VM argument 中输入  -Xmx90m          这样就可以配置90M的内存  

4.XML解析技术
XML的解析开发包如下: Jaxp(Sun)   Jdom    dom4j

1.DOM解析步骤:
得到XML文档
[cpp]
//  1.创建工厂  
  DocumentBuilderFactory  factory=DocumentBuilderFactory.newInstance(); 
//  2.得到dom解析器  
  DocumentBuilder builder=factory.newDocumentBuilder(); 
//  3.解析xml文档,得到代表文档的document  
  Document document=builder.parse("src/test.xml"); 

//  1.创建工厂
  DocumentBuilderFactory  factory=DocumentBuilderFactory.newInstance();
//  2.得到dom解析器
  DocumentBuilder builder=factory.newDocumentBuilder();
//  3.解析xml文档,得到代表文档的document
  Document document=builder.parse("src/test.xml");
更新后的内容重新写入XML文档中


[java]
// 更新后的内容写会XML文档中  
        TransformerFactory transformerFactory = TransformerFactory 
                .newInstance(); 
        Transformer transformer = transformerFactory.newTransformer(); 
        transformer.transform(new DOMSource(document), new StreamResult( 
                new FileOutputStream("src/test.xml"))); 

// 更新后的内容写会XML文档中
  TransformerFactory transformerFactory = TransformerFactory
    .newInstance();
  Transformer transformer = transformerFactory.newTransformer();
  transformer.transform(new DOMSource(document), new StreamResult(
    new FileOutputStream("src/test.xml")));

 


XML中的一些方法

获取属性的

[java]
    // 得到根节点  
Element element = (Element) document.getElementsByTagName("书名").item(0); 
String value = element.getAttribute("name"); 
System.out.println(value); 

   // 得到根节点
  Element element = (Element) document.getElementsByTagName("书名").item(0);
  String value = element.getAttribute("name");
  System.out.println(value);
在指定位置增加节点元素

[java]
?// 创建节点  
Element print = document.createElement("出版社"); 
print.setTextContent("南阳理工学院"); 
 
//注意一下:这里的“作者”是在xml文档中从“0”开始算起 出现的第几次,  
Element bookElement = (Element) document.getElementsByTagName("作者") 
        .item(1); 
//注意一下:这里的“书”是在xml文档中从“0”开始算起 出现的第几次,  
Element rootElement = (Element) document.getElementsByTagName("书") 
        .item(1); 
rootElement.insertBefore(print, bookElement); 

  // 创建节点
  Element print = document.createElement("出版社");
  print.setTextContent("南阳理工学院");

  //注意一下:这里的“作者”是在xml文档中从“0”开始算起 出现的第几次,
  Element bookElement = (Element) document.getElementsByTagName("作者")
    .item(1);
  //注意一下:这里的“书”是在xml文档中从“0”开始算起 出现的第几次,
  Element rootElement = (Element) document.getElementsByTagName("书")
    .item(1);
  rootElement.insertBefore(print, bookElement);

指定位置增加属性

[java]
            Element bookname = (Element) document.getElementsByTagName("书名") 
        .item(1); 
bookname.setAttribute("name", "book"); 

                Element bookname = (Element) document.getElementsByTagName("书名")
    .item(1);
  bookname.setAttribute("name", "book");

删除节点元素

[java] 
/注意一下:这里的“作者”是在xml文档中从“0”开始算起 出现的第几次,  
Element deleteElement = (Element) document.getElementsByTagName("作者") 
        .item(3); 
//注意一下:这里的“书”是在xml文档中从“0”开始算起 出现的第几次,  
Element rootElement = (Element) document.getElementsByTagName("书"

补充:Web开发 , 其他 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,