首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

XML 面試十大核心題:DTD、Schema、XPath、XSLT、命名空間、解析器全解析

     編輯:Java 相關知識

跨語言、跨平台數據交換標準:XML 必考知識體系

XML(可擴展標記語言)雖被 JSON 取代大部分 API 場景,但在企業級系統集成、配置文件、文檔標記、SOAP/WebService、辦公文檔格式(OOXML/ODF)中仍佔主導。本文梳理 10 道高頻面試題,涵蓋基礎概念、驗證、查詢、轉換、解析、命名空間、CDATA、數據綁定。

題目與標準答案速覽

  1. XML 是什麼? 可擴展標記語言,自定義標籤,用 DTD/Schema 規範結構,主用於異構系統數據交換。
  2. DTD vs XML Schema 差異? DTD 非 XML 寫作、類型弱;Schema 本身是 XML、支援豐富數據類型、命名空間、繼承,為現代標準。
  3. XPath 是什麼? XML 路徑語言,用於節點選取、值提取,類似 SQL 查詢 XML,語法如 //book[@id='1']/title。
  4. XSLT 是什麼? XML 轉換語言,將 XML 轉為 HTML/其他 XML/文本,基於規則模板、大量遞歸,由引擎(Saxon/Xalan)執行。
  5. 元素 vs 屬性? 元素承載結構化數據(可巢狀),屬性承載元資料(扁平、唯一),如 <Order id="123"><Price>2300</Price></Order>。
  6. 什麼是 Well-formed XML? 語法正確:單一根元素、標籤正確嵌套閉合、屬性值加引號、特殊字符轉義。否則解析器拒絕處理。
  7. XML 命名空間作用? 避免同名標籤衝突,類似 Java package。宣告 xmlns:prefix="URI",使用 <prefix:tag>。
  8. DOM vs SAX 解析器差異? DOM 樹形載入記憶體、隨機訪問、耗記憶體;SAX 事件驅動流式、單向、低記憶體、適合大文件。
  9. CDATA 是什麼? 字符數據區塊 <![CDATA[ ... ]]>,內容不被解析器解析,用於嵌入腳本、HTML、含特殊字符文本。
  10. Java XML 數據綁定? 將 XML 與 Java 物件雙向映射。JAXB(標準 API)、XMLBeans、JiBX。優勢:用物件操作 XML,免手寫解析邏輯。

進階補充:現代 XML 處理最佳實踐

  • StAX (Streaming API for XML):JSR 173,游標/迭代器風格,介於 DOM/SAX 之間,可讀可寫、記憶體可控,JDK 6+ 內建。
  • Schema 驗證:SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI).newSchema(source).newValidator().validate(streamSource)。
  • XPath 注入防範:參數化 XPath(XPathExpression + 變量綁定),避免字符串拼接。
  • 大文件處理:SAX/StAX + 暫存文件,或 VTD-XML(索引式、隨機訪問、高效能)。
  • JSON 轉 XML:org.json.XML.toString(jsonObj) 或 Jackson XmlMapper 雙向轉換。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved