黑马程序员技术交流社区
标题:
web day10学习笔记
[打印本页]
作者:
kuqi3712
时间:
2018-1-18 21:39
标题:
web day10学习笔记
JDBC 元数据MetaData:
DatabaseMetaData:获取数据库连接的信息,
通过Connection中的getMetaData()方法获取
ParameterMetaData:获得sql中的参数(sql语句中的问号)个数及类型
PreparedStatement中的getParameterMetaData();
ResultSetMetaData:获得结果集的列名及类型
ResultSet中getMetaData()获取
XML:
XML的作用:传输和存取数据.
软件的配置文件
XML使用:
XML的语法:
文档申明
<?xml 属性名="属性值"... ?>
version:版本号(通常用1.0),必须的
encoding:字符集.是使用浏览器打开时采用的默认字符集的编码
standalone:本XML是否需要依赖其他文档 YES/NO
XML必须要有根标签
注释
<!---->
元素
名称中不能包含冒号
不能用数字或者标点开始
名称不能以"XML(不分大小写)"开始
名称不能包含空格
属性
命名规则与元素的相同
XML中的属性需要加引号
特殊字符与CDATA
<小于号
>大于号
&和号&
&apos 单引号'
" 引号"
CDATA(character Data 字符数据)
写到CDATA区的都会被认为是字符串
<![CDATA[
字符串
]]>
XML的解析
DOM解析:Document Object Model
SAX解析:Simple api for xml
他们之间的区别:
DOM:将文档加载到内存,形成树形结构,每一个子元素都是一个子节点
缺点:文档特别大会导致内存溢出
优点:能进行增删改
SAX:事件驱动的方式,一行一行的读取
缺点:不能增删改
优点:不会内存溢出
针对两种解析方式,不同公司提供了不同API实现
1.JAXP sun公司 针对DOM,SAX提供不同的API
2.jdom 开源组织
3.DOM4J开源组织
4.pull 用于安卓
DOM的使用:
1.创建解析器
public static Document getDocument() throws DocumentException {
SAXReader reader = new SAXReader();
Document document = reader.read("src/com/itheima/test02/city.xml");
return document;
}
解析出的元素叫ELement (Node节点,元素节点,属性节点,文本节点)
属性叫Attribute
文本叫Text
Element
List elements() 获取所有的子元素
List elements (String name) 根据指定名称获取相应的所有的子元素
Element element(String name) 根据指定的元素名称来获取第一个子元素的对象
String elementText(String name)根据指定的元素名称来获取子元素中的文本
String getText();获取当前元素对象的文本
String getName();获取当前元素标签名称
void setText(String text)设置当前对象的文本
String attributeValue(String name)根据指定的属性名称获取其对应的值
addAttribute(String name,String value);根据指定的属性名称添加或者修改其对应的值
addElement();添加元素
删除自己无法删 必须找上一级 element 用getParent()方法,再调用remove()方法
XPath:
dom4j支持XPath的jar包
引用jaxen-1.1 jar包
jaxen-1.1-beta-6
dom4j的XPath支持的API
List document.selectNodes(String xPath);
Node document.selectSingleNode(String xPath);
SAX:XML的申明 StartDocument
开始标签 StartElement
结束标签 EndElement
识别到空白 EndDocument
XML的约束:
DTD :
DTD语法是自成一体的
DTD的语法:
Schema :
语法就是XML的语法,所以更容易被解析器解析
Schema支持名称空间
Schema比DTD有更强大的语义和语法的约束
Schema的语法:
XML:
xmlns: XML name space XML的名称空间
名称空间:一个xml只能引入一个DTD文档,但是一个XML可以引入多个schema的约束
如果在多个scheme文档中都定义了相同的属性名称怎么办?
名称空间类似于java中的包,通过名称空间可以区分是来自哪个schema文档,可以解决这个问题(名称空间是不能一样的)
一般情况下 会使用一个url地址来表示一个名称空间
targetNameSpace:目标名称空间.
引入别人的包,路径唯一不重复(元素与之绑定,在新建的XML中 使用xmlns=""约束文档的xmlns"-instance")表示被约束
xmlns xsi:=""约束文档的xmlns"-instance")
xmlns(不能重名)=""约束文档的targetNameSpace"")
xsi:schemaLocation=""约束文档的targetNameSpace" "{schema的名称}"
elementFormDefault:
Schema文档的格式
(导别人的包 名称空间) xmlns="http://www.w3.org/2001/XMLSchema"
(给自己打包 相当于 pakage) targetNamespace="http://xxx.xxxx.xxx/xxx"
Schema约束的XML的格式
(w3c的) xmlns:aa="http://www.w3.org/2001/XMLSchema-instance"
(自定义的 如果这里出现了别名 那么xds中 的标签都需要加上别名 因此将别名放在w3c的名称空间上)
xmlns="http://xxx.xxxx.xxx/xxx"
(xsd文件) aa:schemaLocation="http://xxx.xxxx.xxx/xxx xxx.xsd"
作者:
1414225997
时间:
2018-1-19 11:40
继续努力哦
作者:
渝小妹
时间:
2018-1-21 16:55
期待你每天的进步 温故而知新
作者:
陈文老师
时间:
2018-1-23 09:19
继续加油!每天总结,每天成长!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2