자바 해석 XML 상세 설명
XML 의 문법 이 엄격 하고 대소 문 자 를 완전히 구분 합 니 다.
eXtensible Markup Language
-사물 자 체 를 묘사 합 니 다.xmlXSL(
eXtensible Stylesheet Language
-수식 XML XSL 파일 에 도 별도의 파일 이 있 습 니 다.파일 접미사.xsl다음 진 프로그램 을 통 해 xsl 파일 을 도입 합 니 다.
<?xml-stylesheet type="text/xsl" href="student.xsl"?>
DTDDocment Type Definition
-xml 을 약속 한 탭 은 XML 파일 에서 만 탭 을 작성 할 수 있 습 니 다.탭 에 서 는 속성 DTD 에 단독 파일,파일 접미사.dtd 만 작성 할 수 있 습 니 다.DTD 실례
Schema-DTD 보다 xml 태그 와 형식 을 약속 합 니 다.(XML 파일 제약)schema 는 별도의 파일,파일 접미사.xsd/.xml 이 있 습 니 다.
실례 는:
<?xml version="1.0" encoding="gb2312"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name=" ">
<xs:complexType>
<xs:sequence>
<xs:element name=" ">
<xs:element name=" " minoccurs="1"></xs:element>
<xs:element name=" "></xs:element>
<xs:element name=" ">
<xs:attribute name="unit">
<xs:enumeration value="RMB"/>
<xs:enumeration value=" "/>
<xs:enumeration value=" "/>
</xs:attribute>
</xs:element>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
확장 가능 한 이유:DTD 수정 가능대비 HTML
HTML(
Hyper Text Markup language
)*하이퍼텍스트 전송 태그 문(프로그래머 가 스스로 확장 할 수 없 음)
*HTML 주요 용도:페이지 전시,데이터 처리 불가
*문법 이 산만 하고 대소 문자 구분 없 음
CSS
DTD
Doucment Type Defined
는 HTML 에 태그 가 있 고 태그 에 속성 이 있 습 니 다.schema(DTD 의 업그레이드 버 전,문법 업데이트,DTD 와 동등한 효과 달성)
확장 불가 이유:DTD 확장 불가
XML 파일 에 대한 해석 은?
*어떤 프로 그래 밍 언어 든 XML 파일 에 대한 해석 은 두 가지 방식 을 포함한다.
*DOM 해석
*SAX 해석(org.xml.sax.helps DefaultHandler)
DOM 해석
*원리
XML 파일 을 처리 하기 시작 할 때 모든 XML 파일 을 메모리 에 불 러 옵 니 다.
메모리 에서 프로 그래 밍 언어 는 XML 파일 을 DOM 트 리 로 표시 합 니 다.이 트 리 는 하나 입 니 다.
대상,그리고 우 리 는 이 나무의 임 의 노드 에 대해 첨삭 과 수정 작업 을 한다.왜냐하면
이 나 무 는 모두 메모리 에 있어 서 과거의 노드 를 분석 하면 다시 분석 할 수 있 고 비교적 유연 하 다.
*장점
유연 하 다
*단점
XML 파일 이 크 면 메모리 가 넘 치지 않 더 라 도 메모리 가 넘 칠 수 있 습 니 다.
메모리 도 많이 소모 되 고 메모리 가 줄 어 들 면 프로젝트 의 운행 효율 이 자연히 떨어진다.
*어떤 경우 dom 해석 방식 을 선택 합 니까
모든 요 소 를 유연 하 게 조작 하려 면 dom 으로 해석 하지만 파일 이 작 아야 합 니 다.
SAX 해석
*원리
SAX 해석 은 이벤트 구동 형 을 기반 으로 하 는 해석 방식 입 니 다.그의 해석 은 전체 XML 파일 을 모두 처리 할 필요 가 없습니다.
메모리 로 전송 합 니 다.분석 할 때 순서 가 있 습 니 다.XML 파일 에서 위 에서 아래로 순서대로 분석 합 니 다.
탭 을 시작 할 때 까지 특정한 이벤트 가 발생 했 음 을 표시 합 니 다.이 때 특정한 프로그램 을 실행 하고 끝 났 습 니 다.
탭 은 또 하나의 특정 이벤트 가 발생 했 음 을 표시 합 니 다.이 때 특정한 프로그램 을 실행 하여 해석 을 완료 합 니 다.
*장점
XML 파일 을 옮 길 필요 가 없 기 때문에 많은 메모 리 를 사용 하지 않 고 큰 파일 에 적합 합 니 다.
*단점
다시 시작 하지 않 는 한 과거의 노드 를 해석 할 수 없습니다.
*어떤 경우 에 SAX 해석 방식 을 선택 합 니까
큰 파일 은 SAX 해석 을 사용 하기에 적합 합 니 다.
프로그래머 로 서 XML 파일 을 어떻게 해석 하고 XML 파일 을 해석 하 는 오픈 소스 항목 은 모두 그것 을 포함 합 니까?
자바 XML 관련 오픈 소스 프로젝트 분석
*DOM4j(Dom for Java)
*JDOM
.....
JDK 자체 세트 는 W3C 규범 을 실현 하 는 것 이다.
*org.w3c.com.*; DOM 기반 분석
*org.xml.sax.*; SAX 기반 해석
XML 파일 을 분석 하 는 효율 을 높이 기 위해 XPATH 도 포함 되 어 있 습 니 다.(정규 표현 식 과 유사 한 탭 일치 방식 으로 XML 파일 의 탭 을 빠르게 찾 을 수 있 습 니 다)
XML 파일 에 대한 분석:
DOM4j/JDOM/W3C+......Xpath
JDK 자체 해석
우선 src 디 렉 터 리 아래 xml 파일 을 만 듭 니 다.
다음은 분석 과정 이다.
/**
* JDK "Dom "XML ( )
*/
public class Text04 {
public static void main(String[] args) throws Exception {
//
DocumentBuilderFactory factory= DocumentBuilderFactory.newInstance();
//
DocumentBuilder builder=factory.newDocumentBuilder();
// XML
String path=Thread.currentThread().getContextClassLoader().getResource("db-config.xml").toURI().getPath();
Document document =builder.parse(new File(path));//dom , dom
//
Node rootNode=document.getFirstChild();
//
System.out.println(rootNode.getNodeName());
//
Node driverNode=document.getElementsByTagName("driver").item(0);
String driver =driverNode.getTextContent();
System.out.println(driver);
}
}
출력 결과dom4j 오픈 소스 프로젝트(dom 분석 기반)를 사용 하여 xml 파일 분석(읽 기)
dom4j 오픈 소스 프로젝트 의 jar 패 키 지 를 디 렉 터 리 로 가 져 와 야 합 니 다.
/**
* dom4j XML ( )
*
* XML
*
* DOM4j
*
* dom
*/
public class Text01 {
public static void main(String[] args) throws Exception {
//
SAXReader reader=new SAXReader();// SAXReader, DOM
// , dom
String path=Thread.currentThread().getContextClassLoader().getResource("db-config.xml").toURI().getPath();
Document document= reader.read(new File(path));
//
Element rootElement=document.getRootElement();
//System.out.println(element.getName());
// driver
Element driverElement =rootElement.element("driver");
//
String driver=driverElement.getText();
//System.out.println(driver);
//
driver=rootElement.elementText("driver");
System.out.println(driver);
System.out.println(rootElement.elementText("url"));
System.out.println(rootElement.elementText("user"));
System.out.println(rootElement.elementText("password"));
}
}
출력 결과dom4j 오픈 소스 프로젝트(dom 분석 기반)를 사용 하여 xml 파일 분석(쓰기)
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import java.io.File;
import java.io.FileWriter;
/**
* dom4j XML ( )
*/
public class Text02 {
public static void main(String[] args) throws Exception {
//
Document document= DocumentHelper.createDocument();
//
Element studentInfoElt=document.addElement(" ");
//
Element studentElt=studentInfoElt.addElement(" ");
// id
studentElt.addAttribute("id","110");
//
Element nameElt=studentElt.addElement(" ");
//
nameElt.setText(" ");
//
Element sexElt=studentElt.addElement(" ");
//
sexElt.setText(" ");
//
OutputFormat format= OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");
String path="students.xml";
XMLWriter xmlWriter=new XMLWriter(new FileWriter(new File(path)),format);
xmlWriter.write(document);
xmlWriter.close();
}
}
최종 생 성 된 xml 파일총결산
이 글 은 여기까지 입 니 다.당신 에 게 도움 을 줄 수 있 기 를 바 랍 니 다.또한 당신 이 우리 의 더 많은 내용 에 관심 을 가 져 주 기 를 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.