以下是一个Java解析XML并校验内容的示例代码:
```java
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import java.io.File;
import java.io.IOException;
public class XmlParser {
public static void main(String[] args) {
try {
// 创建DocumentBuilderFactory对象
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 创建DocumentBuilder对象
DocumentBuilder builder = factory.newDocumentBuilder();
// 加载XML文件到Document对象中
Document document = builder.parse(new File("example.xml"));
// 获取所有book节点
NodeList bookList = document.getElementsByTagName("book");
// 遍历book节点
for (int i = 0; i < bookList.getLength(); i++) {
// 获取当前book节点
Element book = (Element) bookList.item(i);
// 获取book节点的属性值
String id = book.getAttribute("id");
// 获取book节点的子节点
NodeList childNodes = book.getChildNodes();
// 遍历book节点的子节点
for (int j = 0; j < childNodes.getLength(); j++) {
Node node = childNodes.item(j);
// 判断子节点是否为元素节点
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node;
// 获取子节点的标签名和文本内容
String name = element.getNodeName();
String value = element.getTextContent();
// 校验内容是否符合要求
if (name.equals("title") && !value.startsWith("Java")) {
System.out.println("Error: " + id + " - Title should start with 'Java'");
} else if (name.equals("price") && Double.parseDouble(value) < 0) {
System.out.println("Error: " + id + " - Price should be greater than 0");
}
}
}
}
} catch (ParserConfigurationException | SAXException | IOException e) {
e.printStackTrace();
}
}
}
```
该代码使用了Java内置的DOM解析器,通过遍历XML文档中的节点来获取节点的属性值和子