在Java中,有几种不同的方式可以进行XML的解析和生成。以下是使用Java进行XML解析和生成的基本步骤:
解析XML:
生成XML:
以下是一个简单的DOM解析和生成的示例:
解析XML:
java复制代码
import javax.xml.parsers.DocumentBuilder; | |
import javax.xml.parsers.DocumentBuilderFactory; | |
import org.w3c.dom.Document; | |
import org.w3c.dom.Element; | |
import org.w3c.dom.NodeList; | |
import org.xml.sax.SAXException; | |
import javax.xml.parsers.ParserConfigurationException; | |
import java.io.File; | |
public class XMLParser { | |
public static void main(String[] args) { | |
try { | |
File inputFile = new File("input.xml"); | |
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); | |
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); | |
Document doc = dBuilder.parse(inputFile); | |
doc.getDocumentElement().normalize(); | |
System.out.println("Root element :" + doc.getDocumentElement().getNodeName()); | |
NodeList nList = doc.getElementsByTagName("student"); | |
System.out.println("----------------------------"); | |
for (int temp = 0; temp < nList.getLength(); temp++) { | |
Node nNode = nList.item(temp); | |
System.out.println("\nCurrent Element :" + nNode.getNodeName()); | |
if (nNode.getNodeType() == Node.ELEMENT_NODE) { | |
Element eElement = (Element) nNode; | |
System.out.println("Student roll no : " + eElement.getAttribute("rollno")); | |
System.out.println("First Name : " + eElement.getElementsByTagName("firstname").item(0).getTextContent()); | |
System.out.println("Last Name : " + eElement.getElementsByTagName("lastname").item(0).getTextContent()); | |
System.out.println("Nick Name : " + eElement.getElementsByTagName("nickname").item(0).getTextContent()); | |
System.out.println("Marks : " + eElement.getElementsByTagName("marks").item(0).getTextContent()); | |
} | |
} | |
} catch (ParserConfigurationException | SAXException | IOException e) { | |
e.printStackTrace(); | |
} | |
} | |
} |
生成XML:
java复制代码
import javax.xml.parsers.*; | |
import javax.xml.transform.*; | |
import javax.xml.transform.dom.*; | |
import javax.xml.transform.stream.*; | |
import org.w3c.dom.*; | |
import java.io.*; | |
import java.util.*; | |
public class XMLGenerator { | |
public static void main(String[] args) { | |
try { | |
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); | |
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); | |
Document doc = dBuilder.newDocument(); | |
Element rootElement = doc.createElement("students"); // 创建根元素 | |
doc.appendChild(rootElement); // 将根元素添加到文档中 | |
List<String> names = Arrays.asList("John", "Mary", "Steve", "Anna"); // 创建一个学生列表并添加到根元素中作为子元素。每个子元素都是一个"student"元素,其中包含"firstname"、"lastname"、"nickname"和"marks"子元素。这些子元素的值都是从列表中随机生成的。我们使用Transformer对象将文档转换为XML格式,并将其写入文件。我们使用TransformerFactory对象来创建一个Transformer对象,然后使用Transformer对象的 |