亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索

XML中如何解析XML列表_XML解析XML列表的方法與示例

穿越時(shí)空
發(fā)布: 2025-10-17 22:36:02
原創(chuàng)
344人瀏覽過
解析XML列表常用DOM、SAX、XPath和JAXB方法;DOM適合小中型文件,SAX節(jié)省內(nèi)存處理大文件,XPath簡化節(jié)點(diǎn)查詢,JAXB實(shí)現(xiàn)對象映射。

xml中如何解析xml列表_xml解析xml列表的方法與示例

在處理XML數(shù)據(jù)時(shí),經(jīng)常會遇到包含列表結(jié)構(gòu)的數(shù)據(jù)。解析XML中的列表需要正確讀取重復(fù)的元素節(jié)點(diǎn),并將其轉(zhuǎn)換為程序可用的結(jié)構(gòu)(如數(shù)組或列表)。下面介紹幾種常見的解析XML列表的方法,并附上實(shí)用示例。

使用DOM解析XML列表

DOM(Document Object Model) 將整個(gè)XML文檔加載到內(nèi)存中,形成樹結(jié)構(gòu),適合小到中等規(guī)模的XML文件。

步驟如下:

  • 加載XML文檔
  • 通過標(biāo)簽名獲取所有相同節(jié)點(diǎn)
  • 遍歷節(jié)點(diǎn)并提取內(nèi)容
<books>
  <book>
    <title>Java編程思想</title>
    <author>Bruce Eckel</author>
  </book>
  <book>
    <title>Effective Java</title>
    <author>Joshua Bloch</author>
  </book>
</books>
登錄后復(fù)制

Java中使用DOM解析上述列表:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new InputSource(new StringReader(xmlString)));

NodeList bookNodes = doc.getElementsByTagName("book");
for (int i = 0; i < bookNodes.getLength(); i++) {
    Element bookElement = (Element) bookNodes.item(i);
    String title = bookElement.getElementsByTagName("title").item(0).getTextContent();
    String author = bookElement.getElementsByTagName("author").item(0).getTextContent();
    System.out.println("書名: " + title + ", 作者: " + author);
}
登錄后復(fù)制

使用SAX解析大型XML列表

SAX(Simple API for XML) 是事件驅(qū)動的流式解析器,適合處理大文件,節(jié)省內(nèi)存。

關(guān)鍵點(diǎn):

  • 實(shí)現(xiàn)DefaultHandler
  • startElementendElement中判斷當(dāng)前標(biāo)簽
  • 用標(biāo)志位記錄是否在某個(gè)列表項(xiàng)中

當(dāng)遇到<book>開始時(shí)設(shè)置標(biāo)志,在結(jié)束時(shí)保存數(shù)據(jù)。

飛書多維表格
飛書多維表格

表格形態(tài)的AI工作流搭建工具,支持批量化的AI創(chuàng)作與分析任務(wù),接入DeepSeek R1滿血版

飛書多維表格26
查看詳情 飛書多維表格

使用XPath定位XML列表項(xiàng)

XPath 可以直接定位到指定路徑的節(jié)點(diǎn)集合,簡化列表提取過程。

示例:提取所有書名

XPath xpath = XPathFactory.newInstance().newXPath();
NodeList titles = (NodeList) xpath.compile("/books/book/title/text()").evaluate(doc, XPathConstants.NODESET);

for (int i = 0; i < titles.getLength(); i++) {
    System.out.println(titles.item(i).getNodeValue());
}
登錄后復(fù)制

使用第三方庫(如Jsoup或Jackson XML)

雖然Jsoup主要用于HTML,但某些場景下也可解析簡單XML。更推薦使用Jackson XmlMapperJAXB將XML映射為Java對象。

例如,定義一個(gè)Book類:

@XmlRootElement(name = "books")
@XmlAccessorType(XmlAccessType.FIELD)
public class Books {
    @XmlElement(name = "book")
    private List<Book> bookList;

    // getter and setter
}

class Book {
    public String title;
    public String author;
}
登錄后復(fù)制

然后使用JAXB解組:

JAXBContext context = JAXBContext.newInstance(Books.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
Books books = (Books) unmarshaller.unmarshal(new StringReader(xmlString));
登錄后復(fù)制

基本上就這些方法。選擇哪種方式取決于XML大小、性能要求和開發(fā)環(huán)境。DOM直觀易用,SAX適合大文件,XPath查詢靈活,而JAXB更適合對象映射場景。

以上就是XML中如何解析XML列表_XML解析XML列表的方法與示例的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!

最佳 Windows 性能的頂級免費(fèi)優(yōu)化軟件
最佳 Windows 性能的頂級免費(fèi)優(yōu)化軟件

每個(gè)人都需要一臺速度更快、更穩(wěn)定的 PC。隨著時(shí)間的推移,垃圾文件、舊注冊表數(shù)據(jù)和不必要的后臺進(jìn)程會占用資源并降低性能。幸運(yùn)的是,許多工具可以讓 Windows 保持平穩(wěn)運(yùn)行。

下載
來源:php中文網(wǎng)
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請聯(lián)系admin@php.cn
最新問題
開源免費(fèi)商場系統(tǒng)廣告
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關(guān)于我們 免責(zé)申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長!
關(guān)注服務(wù)號 技術(shù)交流群
PHP中文網(wǎng)訂閱號
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號