原文: https://howtodoinjava.com/xml/parse-string-to-xml-dom/

在 Java 中,XML 用org.w3c.dom.Document对象表示。 在本 XML 教程中,我们将学习:

  1. 将 XML 字符串转换为 XML 文档
  2. XML 文件内容转换为 XML 文档

1)将字符串转换为 XML 文档

要将将 XML 字符串转换为 XML Dom,我们需要以下类:

  • javax.xml.parsers.DocumentBuilder :定义 API,以从来自各种输入源的 XML 内容中获取 XML DOM 文档实例。 这些输入源是InputStreams,文件,URL 和 SAX InputSources
  • javax.xml.parsers.DocumentBuilderFactory :定义一种工厂 API,使应用能够获取解析器(DocumentBuilder),该解析器从 XML 内容生成 DOM 对象树。
  • org.w3c.dom.Document :它表示整个 XML DOM。 从概念上讲,它是文档树的根,并通过工厂方法提供对文档数据的访问,甚至深入到树中。
  • java.io.StringReader :根据字符串内容创建流。 DocumentBuilder使用此流读取 XML 内容进行解析。
  1. package com.howtodoinjava.demo;
  2. import java.io.StringReader;
  3. import javax.xml.parsers.DocumentBuilder;
  4. import javax.xml.parsers.DocumentBuilderFactory;
  5. import org.w3c.dom.Document;
  6. import org.xml.sax.InputSource;
  7. public class StringtoXMLExample
  8. {
  9. public static void main(String[] args)
  10. {
  11. final String xmlStr = "<employees>" +
  12. " <employee id=\"101\">" +
  13. " <name>Lokesh Gupta</name>" +
  14. " <title>Author</title>" +
  15. " </employee>" +
  16. " <employee id=\"102\">" +
  17. " <name>Brian Lara</name>" +
  18. " <title>Cricketer</title>" +
  19. " </employee>" +
  20. "</employees>";
  21. //Use method to convert XML string content to XML Document object
  22. Document doc = convertStringToXMLDocument( xmlStr );
  23. //Verify XML document is build correctly
  24. System.out.println(doc.getFirstChild().getNodeName());
  25. }
  26. private static Document convertStringToXMLDocument(String xmlString)
  27. {
  28. //Parser that produces DOM object trees from XML content
  29. DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  30. //API to obtain DOM Document instance
  31. DocumentBuilder builder = null;
  32. try
  33. {
  34. //Create DocumentBuilder with default configuration
  35. builder = factory.newDocumentBuilder();
  36. //Parse the content to Document object
  37. Document doc = builder.parse(new InputSource(new StringReader(xmlString)));
  38. return doc;
  39. }
  40. catch (Exception e)
  41. {
  42. e.printStackTrace();
  43. }
  44. return null;
  45. }
  46. }
  47. //Output:
  48. employees

2)将 XML 文件转换为 XML 文档

要使从 XML 文件获取 XML dom,而不是将 XML 字符串传递给DocumentBuilder,请传递文件路径以使解析器直接读取文件内容。

我们有包含 XML 内容的employees.xml文件,我们将阅读以获取 XML 文档。

  1. <employees>
  2. <employee id="101">
  3. <name>Lokesh Gupta</name>
  4. <title>Author</title>
  5. </employee>
  6. <employee id="102">
  7. <name>Brian Lara</name>
  8. <title>Cricketer</title>
  9. </employee>
  10. </employees>
  1. package com.howtodoinjava.demo;
  2. import java.io.File;
  3. import javax.xml.parsers.DocumentBuilder;
  4. import javax.xml.parsers.DocumentBuilderFactory;
  5. import org.w3c.dom.Document;
  6. public class StringtoXMLExample
  7. {
  8. public static void main(String[] args)
  9. {
  10. final String xmlFilePath = "employees.xml";
  11. //Use method to convert XML string content to XML Document object
  12. Document doc = convertXMLFileToXMLDocument( xmlFilePath );
  13. //Verify XML document is build correctly
  14. System.out.println(doc.getFirstChild().getNodeName());
  15. }
  16. private static Document convertXMLFileToXMLDocument(String filePath)
  17. {
  18. //Parser that produces DOM object trees from XML content
  19. DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  20. //API to obtain DOM Document instance
  21. DocumentBuilder builder = null;
  22. try
  23. {
  24. //Create DocumentBuilder with default configuration
  25. builder = factory.newDocumentBuilder();
  26. //Parse the content to Document object
  27. Document doc = builder.parse(new File(filePath));
  28. return doc;
  29. }
  30. catch (Exception e)
  31. {
  32. e.printStackTrace();
  33. }
  34. return null;
  35. }
  36. }
  37. //Output:
  38. employees

将我的问题放在评论部分。

学习愉快!