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 中国語 Web サイトの他の関連記事を参照してください。

RSSとXMLは、最新のWebで依然として重要です。 1.RSSはコンテンツを公開および配布するために使用され、ユーザーはRSSリーダーを介して購読して更新を取得できます。 2。XMLはマークアップ言語であり、データストレージと交換をサポートし、RSSファイルはXMLに基づいています。

RSSにより、マルチメディアコンテンツの埋め込み、条件付きサブスクリプション、パフォーマンスとセキュリティの最適化が可能になります。 1)タグを介してオーディオやビデオなどのマルチメディアコンテンツを埋め込みました。 2)XMLネームスペースを使用して条件付きサブスクリプションを実装し、サブスクライバーが特定の条件に基づいてコンテンツをフィルタリングできるようにします。 3)CDATAセクションとXMLSchemaを介してRSSFeedのパフォーマンスとセキュリティを最適化して、標準の安定性とコンプライアンスを確保します。

RSSは、頻繁に更新されるデータを公開するために使用されるXMLベースの形式です。 Web開発者として、RSSを理解することで、コンテンツの集約と自動化の更新機能を改善できます。 RSS構造、解析、および生成方法を学習することにより、RSSFeedsを自信を持って処理し、Web開発スキルを最適化できるようになります。

RSSは、JSONの代わりにXMLを選択しました。1)XMLの構造と検証機能は、RSS複雑なデータ構造のニーズに適したJSONよりも優れています。 2)その時点でXMLは広くサポートされていました。 3)RSSの初期バージョンはXMLに基づいており、標準になっています。

RSSは、頻繁に更新されるコンテンツを購読および読み取りに使用するXMLベースの形式です。その実用的な原則には、生成と消費の2つの部分が含まれ、RSSリーダーを使用することで情報を効率的に取得できます。

RSSドキュメントのコア構造には、XMLタグと属性が含まれます。特定の解析と生成の手順は次のとおりです。1。XMLファイル、プロセス、タグを読み取ります。 2。抽出、、、、などのタグ情報。 3。バージョンの互換性を確保するために、カスタムタグと属性を処理します。 4.キャッシュと非同期処理を使用して、パフォーマンスを最適化してコードの読みやすさを確保します。

JSON、XML、およびRSSの主な違いは構造と使用です。1。JSONは、簡潔な構造と解析が簡単な単純なデータ交換に適しています。 2。XMLは、複雑なデータ構造に適しており、厳密な構造ですが複雑な解析があります。 3。RSSはXMLに基づいており、コンテンツのリリースに使用され、標準化されていますが使用が制限されています。

XML/RSSフィードの処理には、解析と最適化が含まれ、一般的な問題にはフォーマットエラー、エンコードの問題、および欠落要素が含まれます。ソリューションには以下が含まれます。1。XML検証ツールを使用して、フォーマットエラーを確認します。 2。エンコーディングの一貫性を確保し、シャルドライブラリを使用してエンコードを検出します。 3.デフォルト値を使用するか、要素が欠落しているときに要素をスキップします。 4. LXMLやキャッシュの解析結果などの効率的なパーサーを使用して、パフォーマンスを最適化します。 5. XML注入攻撃を防ぐために、データの一貫性とセキュリティに注意してください。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。
