JavaWeb 연구 노트 1 : XML 및 톰캣

1-XML 소개

extendssible 마크 업 언어 확장 마크 업 언어
XML이있다 :
1, 데이터를 저장하는 데 사용할 수있는
2, 프로파일에 사용할 수있는
3, 데이터 전송 캐리어

HTML과 유사 XML 역 트리 구조
특정 콘텐츠와 기능이 매우 상세하게 배우고 API를 볼 수 있습니다

2 XML 문서 선언
  1. 간단한 문장, 버전 : XML이 시간을 구문 분석, 구문 분석의 버전
    如:<?xml version="1.0">
  2. 인코딩 : XML 텍스트를 구문 분석, 무엇을 인코딩 보증금, 어떤 코드 해상도
    如:<?xml version="1.0" encoding="gbk">
  3. 독립형 : 없음 - 다른 문서 관련 문서
    如:<?xml version="1.0" encoding="gbk" standalone="no"?>
3 XML 요소 정의, 속성 정의

XML 요소 정의
요소 특성

4 XML 주석, CDATA 영역

당신은 코멘트를 추가하지 않으면 레이블 만 제대로 표시하기 위해, 그렇지 않으면 오류를 배치 할 수 있습니다. 이 시간 캔 주석 솔루션에서
일반적으로 데이터 전송시에 발생, 일반적으로 드문합니다
(<&)이 개 잘못된 문자를 이스케이프 문자로 교체해야합니다
특정 문자열의 너무 많은이있는 경우, 그리고 이는 포함 이 텍스트 레이블 또는 키워드는 너무 많이, 당신이 포장 CDATA를 사용하여 XML 파서를 구문 분석하고 싶지 않은, 그러나 이것은 일반적으로 덜 CDATA 볼 수있다
用法:<![CDATA[内容]]>

5 XML 파싱 모드 (DOM & SAX)

DOM 및 SAX : 사실, 요소는 문자 데이터 또는 속성 데이터를 내부에 두 가지를 얻을 수 있습니다. DOM은, 해결하는 방법에는 여러 가지가 위에서 아래로 트리 구조를 형성 메모리에 저장된 모든 문서를 넣어 구문 분석,하지만 일반적으로 모두 사용됩니다
DOM & SAX
같은 분석 도구 : 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的时候,能够快速的定位判断具体的某一个元素。

  1. 패키지 jaxen-1.1-베타 6.jar을 따라 항아리 추가
  2. 찾기에서 노드는 XPath를 찾을 문법의 규칙에 따라, 시간 지정
  3. 구문 분석 코드 이전과 연속적인 코드

특정 코드 :

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 약속

개발 프로세스 및 데이터의 속성 중 일부는 제한 될, 고유 사용 억제 그렇게 할 수 있습니다

  1. DTD : 제약 방법하지만, XML 파서가 해결 될 수없고, 빈약 한 가독성은 자신의 범주 문법
  2. 스키마 : 사실, XML 문법 규칙, XML의 사용, XML 파서 더 편리하지만, 더 텍스트보다, 그래서에 그것은 진정한 의미 DTD를 대체하지 않습니다
9 XML DTD

DTD

  1. DTD는 네트워크에 도입

    DTD는 문서 유형 루트 태그 이름 DTD의 네트워크 경로에 이름을 DTD
    <! DOCTYPE STU 상 PUBLIC "// UNKNOWN /"> "unknown.dtd">

  2. 지역 DTD의 도입

    지역 DTD 소개 : 루트 태그 이름을 DTD의 로컬 도입의 위치의 DTD
    <DOCTYPE STU 상은 SYSTEM "stus.dtd"!>
    와 같은 DTD 파일의 코드는 다음과 같습니다 :
    <STU 상 요소 (STU)!>
    <STU 요소 (이름, 나이, 주소)! >
    <! 요소 이름 (#PCDATA)>
    <! 나이 요소 (#PCDATA)>
    <! 요소 (#PCDATA)> 주소
    도입, XML 파일 스투 하나의 후 또는 오류

  3. 는 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를 데리러 오래, 오래되었습니다, 나는 배우고 블로그의 쓰기 노트를 학습 할 것입니다.
  --- 짧은 단계, 천 마일, 강력한 급류에없는 작은 스트림.

게시 15 개 원래 기사 · 원의 찬양 (18) · 전망 4579

추천

출처blog.csdn.net/oZuoShen123/article/details/105046949