DOM解析的基本思路:
1、将整个XML文件一次性读入内存
2、将整个XML看做一棵树
3、XML中的每一个标签,属性,文本都看做是树上的一个结点
4、然后可以对结点进行增删改查的操作
话不多说,上代码。
1、首先我在D:\ABC中新建了一个文本文件,重命名为stus.xml,以下是文件中的内容
<?xml version = "1.0" encoding = "GBK" ?> <stus class = "S160401A"> <stu num = "001" > <name>张三</name> <age>20</age> <sex>男</sex> </stu> <stu num = "002"> <name>李四</name> <age>21</age> <sex>女</sex> </stu> <stu num = "003"> <name>王五</name> <age>22</age> <sex>男</sex> </stu> </stus>
在第一行是XML声明,version表示版本号,encoding表示编码方式,微软的记事本用的是国标的编码方式,如果要用UTF-8,则要在另存为窗口中修改编码方式为UTF-8。
必须且只能有一对根标签,我写的根标签是
2、这是一个学生类,定义了一些属性和get、set方法
<span style="font-size: 16px;">public class Student { public static String Class; private String name; private int num; private int age; private char sex; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public char getSex() { return sex; } public void setSex(char sex) { this.sex = sex; } }</span>
3、这是用DOM解析的类,看这个类之前还要了解一下。
DocumentBuilderFactory DOM解析器工厂
DocumentBuilder DOM解析器
Document 文档对象
Node 结点【接口】
Element 元素结点【标签结点】
Attr 属性结点
Text 文本结点
Node 是Document,Element,Attr,Text的父接口
NodeList 结点列表
NamedNodeMap 一个结点的所有属性
<span style="font-size: 16px;">import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Attr; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import bean.Student; public class DOMParser { public static void main(String[] args) throws Exception { // 得到解析器工厂对象 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); // 生产一个解析器对象 DocumentBuilder builder = factory.newDocumentBuilder(); // 开始解析XML文件,得到解析的结果,是一个Document对象 // Document对象叫做文档树对象 Document dom = builder.parse("D:\\ABC\\stus.xml"); // 通过Document对象提取数据 // Document对象的第一个子节点是根节点[根标签] Node root = dom.getFirstChild(); // 获得标签的名字 String str = root.getNodeName(); // 获得根节点的属性 NamedNodeMap attrs = root.getAttributes(); // 强转成Attr类型 属性类 Attr attr = (Attr) attrs.getNamedItem("class"); // 获得属性里的值 String v = attr.getValue(); System.out.println(v); // 获得所有的学生------------------------------------- NodeList list = root.getChildNodes(); for (int i = 0; i < list.getLength(); i++) { Node node = list.item(i); // 判断是否是标签结点 if (node instanceof Element) { Element e = (Element) node; // 获得标签结点里属性的值 String num = e.getAttribute("num"); System.out.println(num); // 输出标签中的文本 // System.out.println(e.getTextContent()); // 继续获得stu的子节点 NodeList nodeList = e.getChildNodes(); for (int j = 0; j < nodeList.getLength(); j++) { Node n = nodeList.item(j); if (n instanceof Element) { Element ele = (Element) n; // 获得元素结点的标签名字 String nodeName = ele.getNodeName(); // 获得元素结点标签中的文本 String value = ele.getTextContent(); if (nodeName.equals("name")) { System.out.println("姓名:" + value); } else if (nodeName.equals("age")) { System.out.println("年龄:" + value); } else if (nodeName.equals("sex")) { System.out.println("性别:" + value); } } } } } } }</span>
自己在其中总结了一些方法:
DocumentBuilderFactory类:
public static DocumentBuilderFactory newInstance(); //得到解析器工厂对象 public abstract DocumentBuilder newDocumentBuilder(); //生产一个解析器对象
DocumentBuilder类:
public Document parse(String uri); //解析路径为uri的XML文件,得到解析的结果是一个Document对象
Node类:
public Node getFirstChild(); //得到Document对象的第一个子结点,也就是根结点、或者叫根标签,在上面的代码中得到的是stus,看上面的第1点中的XML文件的内容。 public NamedNodeMap getAttributes();//获得结点的属性 public NodeList getChildNodes();//获得所有子结点 public String getNodeName();//获得标签的名字 public String getTextContent() throws DOMException;//获得标签结点中的文本
NamedNodeMap类:
public Node getNamedItem(String name);//返回所有名字为name的结点
Attr类:
public String getValue();//获得属性里的值
NodeList类:
public Node item(int index);//返回第index个结点
Element类:
public String getAttribute(String name);//获得标签结点里属性name的值
위 내용은 XML-JAXP 기술-DOM 파싱에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

RSS를 사용하면 멀티미디어 컨텐츠 임베딩, 조건부 가입 및 성능 및 보안 최적화가 가능합니다. 1) 태그를 통해 오디오 및 비디오와 같은 멀티미디어 컨텐츠를 포함합니다. 2) XML 네임 스페이스를 사용하여 조건부 가입을 구현하여 구독자가 특정 조건에 따라 컨텐츠를 필터링 할 수 있습니다. 3) CDATA 섹션 및 XMLSCHEMA를 통해 RSSFEED의 성능 및 보안을 최적화하여 표준에 대한 안정성과 준수를 보장합니다.

RSS는 자주 업데이트되는 데이터를 게시하는 데 사용되는 XML 기반 형식입니다. 웹 개발자로서 RSS를 이해하면 콘텐츠 집계 및 자동화 업데이트 기능을 향상시킬 수 있습니다. RSS 구조, 구문 분석 및 생성 방법을 학습하면 RSSFeeds를 자신있게 처리하고 웹 개발 기술을 최적화 할 수 있습니다.

RSS는 다음과 같이 JSON 대신 XML을 선택했습니다. 1) XML의 구조 및 검증 기능은 JSON보다 낫습니다. 이는 RSS 복잡한 데이터 구조의 요구에 적합합니다. 2) XML은 당시 광범위하게 지원되었다. 3) RSS의 초기 버전은 XML을 기반으로했으며 표준이되었습니다.

RSS는 자주 업데이트되는 컨텐츠를 구독하고 읽는 데 사용되는 XML 기반 형식입니다. 작업 원칙에는 생성과 소비, RSS 리더 사용을 사용하면 정보를 효율적으로 얻을 수 있습니다.

RSS 문서의 핵심 구조에는 XML 태그 및 속성이 포함됩니다. 특정 구문 분석 및 생성 단계는 다음과 같습니다. 1. XML 파일, 프로세스 및 태그 읽기. 2. 추출 ,, 등을 태그 정보. 3. 버전 호환성을 보장하기 위해 사용자 정의 태그 및 속성을 처리하십시오. 4. 캐시 및 비동기 처리를 사용하여 성능을 최적화하여 코드 가독성을 보장하십시오.

JSON, XML 및 RSS의 주요 차이점은 구조와 2. XML은 엄격하지만 복잡한 구문 분석을 가진 복잡한 데이터 구조에 적합합니다. 3. RSS는 XML을 기반으로하며 컨텐츠 릴리스, 표준화되었지만 제한된 사용에 사용됩니다.

XML/RSS 피드의 처리에는 구문 분석 및 최적화가 포함되며 일반적인 문제에는 형식 오류, 인코딩 문제 및 누락 된 요소가 포함됩니다. 솔루션은 다음과 같습니다. 1. XML 검증 도구를 사용하여 형식 오류를 확인하십시오. 2. 인코딩 일관성을 확인하고 Chardet 라이브러리를 사용하여 인코딩을 감지합니다. 3. 기본값을 사용하거나 요소가 누락 될 때 요소를 건너 뜁니다. 4. LXML 및 캐시 구문 분석 결과와 같은 효율적인 파서를 사용하여 성능을 최적화합니다. 5. XML 주입 공격을 방지하기 위해 데이터 일관성 및 보안에주의를 기울이십시오.

RSS 문서를 구문 분석하는 단계에는 다음이 포함됩니다. 1. XML 파일 읽기, 2. DOM 또는 SAX를 사용하여 XML을 구문 분석, 3. 제목, 링크 및 기타 정보 추출 및 4. 프로세스 데이터. RSS 문서는 RSS 리더 또는 데이터 처리 도구를 구축하는 데 적합한 업데이트 된 컨텐츠, 구조 및 요소를 게시하는 데 사용되는 XML 기반 형식입니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

WebStorm Mac 버전
유용한 JavaScript 개발 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기