1-XML 소개
extendssible 마크 업 언어 확장 마크 업 언어
XML이있다 :
1, 데이터를 저장하는 데 사용할 수있는
2, 프로파일에 사용할 수있는
3, 데이터 전송 캐리어
HTML과 유사 XML 역 트리 구조
특정 콘텐츠와 기능이 매우 상세하게 배우고 API를 볼 수 있습니다
2 XML 문서 선언
- 간단한 문장, 버전 : XML이 시간을 구문 분석, 구문 분석의 버전
如:<?xml version="1.0">
- 인코딩 : XML 텍스트를 구문 분석, 무엇을 인코딩 보증금, 어떤 코드 해상도
如:<?xml version="1.0" encoding="gbk">
- 독립형 : 없음 - 다른 문서 관련 문서
如:<?xml version="1.0" encoding="gbk" standalone="no"?>
3 XML 요소 정의, 속성 정의
4 XML 주석, CDATA 영역
당신은 코멘트를 추가하지 않으면 레이블 만 제대로 표시하기 위해, 그렇지 않으면 오류를 배치 할 수 있습니다. 이 시간 캔 주석 솔루션에서
일반적으로 데이터 전송시에 발생, 일반적으로 드문합니다
(<&)이 개 잘못된 문자를 이스케이프 문자로 교체해야합니다
특정 문자열의 너무 많은이있는 경우, 그리고 이는 포함 이 텍스트 레이블 또는 키워드는 너무 많이, 당신이 포장 CDATA를 사용하여 XML 파서를 구문 분석하고 싶지 않은, 그러나 이것은 일반적으로 덜 CDATA 볼 수있다
用法:<![CDATA[内容]]>
5 XML 파싱 모드 (DOM & SAX)
DOM 및 SAX : 사실, 요소는 문자 데이터 또는 속성 데이터를 내부에 두 가지를 얻을 수 있습니다. DOM은, 해결하는 방법에는 여러 가지가 위에서 아래로 트리 구조를 형성 메모리에 저장된 모든 문서를 넣어 구문 분석,하지만 일반적으로 모두 사용됩니다
같은 분석 도구 : JAXP, JDOM, dom4j를 (가장 일반적인)
6-XML의 DOM4J 항목
1, SAXReader 객체를 생성하도록
지정된 2 XML 파싱을
. 3, 루트 요소에 접근
루트 요소, 또는 다음의 하위 요소에 따른 서브 - 소자를 수득 4
element.element("stu"); //返回根元素下的第一个stu元素
element.elements("stu");//返回根元素下的所有stu元素
특정 코드 :
SAXReader sax = null;
Document dom = null;
try {
String filePath = "src/xml/demo.xml";
sax = new SAXReader();
dom = sax.read(filePath);
//返回xml文件的相对路径
//System.out.println(dom.getName());
//获得根元素对象的地址再获取根元素名
//System.out.println(dom.getRootElement().getName());
//获得Element集合(所有的stu元素),并获取元素下的数据
List<Element> element = dom.getRootElement().elements();
for (Element element2 : element) {
System.out.print(element2.element("name").getText()+"\t");
System.out.print(element2.element("age").getText()+"\t");
System.out.print(element2.element("address").getText());
System.out.println();
}
} catch (Exception e) {
e.printStackTrace();
}
7 XML XPath는 항목
: 새로운 지식, 새로운 객체 만남
3. 객체가 정상 값의 어떤 4. 5. 축적보고 돌아 있습니다 문서를 볼 수있는 키워드 1. 2. 참고 "".
dom4j里面支持xpath的写法,xpath其实是xml的路径语言,支持我们在解析xml的时候,能够快速的定位判断具体的某一个元素。
- 패키지 jaxen-1.1-베타 6.jar을 따라 항아리 추가
- 찾기에서 노드는 XPath를 찾을 문법의 규칙에 따라, 시간 지정
- 구문 분석 코드 이전과 연속적인 코드
특정 코드 :
SAXReader sax = null;
Document dom = null;
try {
String filePath = "src/xml/demo.xml";
sax = new SAXReader();
dom = sax.read(filePath);
Element re = dom.getRootElement();
//要想使用Xpath,还得添加支持的jar,获取的是第一个,只返回一个
Element nameElement = (Element)re.selectSingleNode("//name");
System.out.println(nameElement.getText());
System.out.println("--------------------");
List<Element> list = re.selectNodes("//name");
for (Element element : list) {
System.out.println(element.getText());
}
} catch (Exception e) {
e.printStackTrace();
}
8-XML XML 약속
개발 프로세스 및 데이터의 속성 중 일부는 제한 될, 고유 사용 억제 그렇게 할 수 있습니다
- DTD : 제약 방법하지만, XML 파서가 해결 될 수없고, 빈약 한 가독성은 자신의 범주 문법
- 스키마 : 사실, XML 문법 규칙, XML의 사용, XML 파서 더 편리하지만, 더 텍스트보다, 그래서에 그것은 진정한 의미 DTD를 대체하지 않습니다
9 XML DTD
-
DTD는 네트워크에 도입
DTD는 문서 유형 루트 태그 이름 DTD의 네트워크 경로에 이름을 DTD
<! DOCTYPE STU 상 PUBLIC "// UNKNOWN /"> "unknown.dtd"> -
지역 DTD의 도입
지역 DTD 소개 : 루트 태그 이름을 DTD의 로컬 도입의 위치의 DTD
<DOCTYPE STU 상은 SYSTEM "stus.dtd"!>
와 같은 DTD 파일의 코드는 다음과 같습니다 :
<STU 상 요소 (STU)!>
<STU 요소 (이름, 나이, 주소)! >
<! 요소 이름 (#PCDATA)>
<! 나이 요소 (#PCDATA)>
<! 요소 (#PCDATA)> 주소
도입, XML 파일 스투 하나의 후 또는 오류 -
는 XML DTD 제약 규칙의 내부에 직접 내장
XML 문서 제약 규칙은 DTD의 내부에 직접 삽입
<! DOCTYPE의 STU 상 [
<! STU 상 소자 (STU)는 STU 아래 +> STU 상 소자 있지만 단지
<! ELEMENT의 STU (이름, 나이 )> 스투 이름은 두 개의 요소에 따라 , 나이
<요소 이름 (#PCDATA)!>
<나이 요소 (#PCDATA)!>
STU가 속성, 텍스트 입력, 선택적인 속성]>가 <ATTLIST STU ID CDATA #IMPLIED!>
요소의 수를 : + 하나 이상의 * 0 개 이상의 제로 나?
재산의 유형 : CDATA : 속성은 일반 텍스트 ID는 다음과 같습니다 속성의 값은 고유해야합니다
10-XML 스키마
스키마 쓰기, 쓰기 요소, 다음 점차적으로 쓰기 수준에
teacher.xsd :
<!-- xmlns:xml namespace:名称空间
targetNamespace:下面定义的元素都与这个名称空间绑定
elementFormDefault:元素的格式化情况 -->
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/teacher"
xmlns:tns="http://www.example.org/teacher"
elementFormDefault="qualified">
<!-- 为复杂元素 -->
<element name="teachers">
<complexType>
<sequence>
<!-- 为复杂元素:默认只有一个 -->
<element name="teacher">
<complexType>
<sequence maxOccurs="unbounded">
<!-- 为简单元素 -->
<element name="name"></element>
<element name="age"></element>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>
teacher.xml :
<!-- xmlns:xsi:这里必须是这样的写法,也就是这个值已经固定了
xmlns:这里是名称空间,也固定了,写的是chema里面的顶部目标名称空间
xsi:schemaLocation:有两段:前半段是名称空间,也是目标空间的值,后面的约束文档的路径 -->
<teachers
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.example.org/teacher"
xsi:schemaLocation="http://www.example.org/teacher teacher.xsd">
<teacher>
<name>张三</name>
<age>28</age>
</teacher>
</teachers>
네임 스페이스의 역할 : 당신은 그것의 제약 규칙을 바인딩 할 경우 XML, DTD 가정은 다음 XML은 바인드 DTD는, 바인드 여러 DTD하지만 여러 스키마 바인딩 할 수 없습니다 수 있습니다.
제약 당신이 규칙을 사용하는 경우, 기본적으로 사용할 수있는 요소를 배제 바인딩 네임 스페이스의 역할은, 당신은 쓸 수 있습니다 :
<name>张三</name>
<aa:name></aa:name>
<bb:name></bb:name>
11 - 절차 적 프레임 워크 (BS & CS)
C / S (클라이언트 / 서버)
, 예를 들면 : QQ 마이크로 채널 ... LOL
장점 : 클라이언트에 기록 된 코드의 일부는, 사용자의 경험이 바람직
단점 : 서버를 업데이트하는 업데이트 발자국 클라이언트 큰
B / S (브라우저 / 서버 )
예를 들면 : 웹 게임 webQQ 전분기 메일 ...
장점 : 긴 같은 클라이언트 업데이트하지 않고 될 수있는 브라우저, 소형 풋 프린트, 같은
가난한 사용자 경험 : 단점을
12 웹 서버
서버 구성이 평균보다 더 나은, 컴퓨터입니다
요청 및 응답에 동의 브라우저 주소, 웹 서버 소프트웨어의 주소 표시 줄에 클라이언트 입력
: 1 : 톰캣 3 프로젝트를 게시 : Elipse 구성 톰캣이 설치 과정을
13 DOM4J 요약
DOM4J 의미의 다른 수준을 사용하는 경우 :
Document doc = saxR.read("src/xml/teacher.xml");
System.out.println(doc.getName()); //此时还未进入xml,所以输出相对路径
Element element = doc.getRootElement();
//阶段一:
System.out.println(element.getName()); //进入xml根元素,输出根元素名
System.out.println(element.getText()); //进入xml根元素,此时两种方法一样
//阶段二:
System.out.println(element.element("teacher").getName()); //进入teacher元素,输出teacher
System.out.println(element.element("teacher").getText()); //进入teacher元素,但无法取出子元素,所以输出换行符
//阶段三:
System.out.println(element.element("teacher").element("name").getText());
HPF- 자기 요약
XML 및 톰캣 학교는 오래 전에 사실이지만, 노트를 만들어되지 않았습니다. 또한, 전 그래서 당신은 여기 노트를 참조 할 수있는 그들이 잊어 버린 후 동시에 공유로 만들어 말한다. 주로 기록을 할 수 있습니다.
때문에 자신의 게으름, 그것은 더 JavaWeb 배우고 계속 배울 계속 없으며, 최근에 더 많은 심의를 혼동하거나 JavaWeb를 데리러 오래, 오래되었습니다, 나는 배우고 블로그의 쓰기 노트를 학습 할 것입니다.
--- 짧은 단계, 천 마일, 강력한 급류에없는 작은 스트림.