您的位置:首页 > 编程语言 > Java开发

javawebday07补充(jaxp增删查替换节点 2个工厂Document Transformer schema约束入门)

2017-09-22 15:51 344 查看
Window –> Preferences –>Java –>Code Style –>Code Templates–> Code –> Method body

重写时候的注释

/**
* 表单提交方式
*  button提交
*  超链接提交
*  事件
* 文档声明 必须放在第一行第一列
* 设置xml编码和保存编码一致
* XML的特殊字符
*  CDATA PI
* DTD入门
*  两种约束 dtd和schema
*  #PCDATA 表名该元素可以包含任何字符数据 但是不能在其中包含任何子元素
*  最好只加入纯文本字符数据
*
* @author civilizationV
*
*/
public class TestJaxp {
public static void main(String[] args) throws Exception {
//selectAll();
//      selectSin();
//      myAppend();
//      change();
del();
}

//删除sex节点
public static void del() throws Exception, SAXException, IOException {
/*
* 1、创建解析器工厂
* 2、根据解析器工厂创建解析器
* 3、解析xml 返回docuemnt
* 4、获取sex元素
* 5、获取sex的父节点
* 6、删除使用父节点删除 removeChild方法
* 7、回写xml
*/
Document document = getDocument();
//得到sex元素
Node sex =  document.getElementsByTagName("sex").item(0);
//得到sex的父节点 并删除
sex.getParentNode().removeChild(sex);
//回写
TransformerFactory tsf = TransformerFactory.newInstance();
Transformer tf = tsf.newTransformer();
tf.transform(new DOMSource(document), new StreamResult("11.xml"));

}
//使用jaxp添加节点
public static void myAppend() throws Exception, SAXException, IOException {
/*
* 1、创建解析器工厂
* 2、根据解析器工厂创建解析器
* 3、解析xml 返回docuemnt
* 4、得到第一个p1
*  得到所有p1 使用item方法下标得到
* 5、创建sex标签 createElement
* 6、创建文本createTextNode
* 7、把文本添加到sex下面 appendChild
* 8、把sex添加到第一个p1下面 appendChild
* 9、回写xml
*/
Document document = getDocument();
Node p1 = document.getElementsByTagName("p1").item(1);
Node sex =  document.createElement("sex");
Node text = document.createTextNode("xx");
sex.appendChild(text);
p1.appendChild(sex);
TransformerFactory tsf = TransformerFactory.newInstance();
Transformer tf = tsf.newTransformer();
tf.transform(new DOMSource(document), new StreamResult("33.xml"));

}
//使用jaxp修改 节点
public static void change() throws ParserConfigurationException, SAXException, IOException, TransformerException {
/*
* 1、创建解析器工厂
* 2、根据解析器工厂创建解析器
* 3、解析xml 返回document
* 4、得到sex item方法
* 5、修改sex里面的值 setTextContent 方法
* 6、回写xml
*/
//1.2.3
Document document = getDocument();
//得到sex
Node sex =  document.getElementsByTagName("sex").item(0);
//修改sex
sex.setTextContent("男");
//回写xml
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.transform(new DOMSource(document), new StreamResult("22.xml"));
}
//查询xml中第一个name元素的值
public static void selectSin() throws Exception {
/*
* 1、创建解析器工厂
* 2、根据解析器工厂创建解析器
* 3、解析xml 返回document
* 4、得到所有name元素
* 5、使用返回集合里面方法item 下标获取具体的元素
*  NodeList.item(下标) 集合下标从0开始
* 6、得到具体的值 使用 getTextContent方法
*/
Document document = getDocument();
//得到所有的name元素
NodeList list =  document.getElementsByTagName("name");
//使用下标 得到第一个元素
Node name = list.item(0);
String s =  name.getTextContent();
System.out.println(s);
}
//查询所有name元素的值
private static void selectAll() throws Exception {
Document document = getDocument();
//得到name元素
NodeList list = document.getElementsByTagName("name");
//遍历集合
for (int i = 0; i < list.getLength(); i++) {
Node name = list.item(i);//得到每一个name元素
//得到name元素里面的值
String s = name.getTextContent();
System.out.println(s);
}
}
private static Document getDocument() throws ParserConfigurationException, SAXException, IOException {
//创建解析器工厂
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
//创建解析器
DocumentBuilder builder = builderFactory.newDocumentBuilder();
//解析xml得到document
Document document =  builder.parse("11.xml");
return document;
}
}


/*
* 查询所有的元素的名称
*  查询元素下面的子节点 getChildNodes
* XML Schema 也是一种用于定义和描述XML文档结构与内容的模式语言
* 其出现是为了克服DTD的局限性
* Schema和DTD
*  XML Schema 符合XML语法结构
*  DOM、SAX等XML API 等容易解析出XML Schema文档中的内容
*  XML Schema对名称空间支持非常好
*  XML Schema 比XML DTD 支持更多的数据类型并支持用户自定义新的数据类型
*  XML Schema 定义约束的能力非常强大 可以对XML实例文档作出细致的语义限制
*  XML Schema不能像DTD 一样定义实体 比DTD 更加复杂 但XML Schema现在已是w3c组织的标准 正逐步替代DTD
*  dtd语法 <!ELEMENT 元素名称 约束>
*      schema符合xml的语法 xml
*      一个xml中可以有多个schema 多个schema使用名称空间区分(类似于java包名)
*      dtd里面有PCDATA 类型 但是在schema里面可以支持更多的数据类型
*          比如年龄 只能是整数 在schema可以直接定义一个整数类型
*      schema语法更加复杂
*  schema入门
*  XML Schema自身就是一个XML文件 但它的扩展名称为.xsd
*      和XML文件一样 也要有一个根节点 Schema的根节点为Schema
*      编写XML Schema约束文档后 通常需要把这个文件中声明的元素绑定到一个URI地址上 这个URI地址叫
*      namespace名称空间 以后XML文件就可以通过这个URI(名称空间)引用绑定指定名称空间的元素
*  在<schema> 文件里面有w3c提供的属性和标签 约束xml文件
*  创建一个schema文件
*      步骤
*          1、看xml中有多少个元素
*              <element>
*
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: