根据对象解析String 字符 xml内容 java
在Java中,可以使用Java内置的XML解析器来解析String类型的XML内容。以下是一些常见的Java XML解析库:
- DOM解析器:使用DOM解析器可以将XML文档解析为一个树形结构,可以方便地遍历和修改XML文档。下面是一个使用DOM解析器解析String类型的XML内容的示例:
String xmlContent = "<root><name>John</name><age>25</age></root>";
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
InputSource is = new InputSource(new StringReader(xmlContent));
Document doc = builder.parse(is);
NodeList nodeList = doc.getElementsByTagName("name");
String name = nodeList.item(0).getTextContent();
nodeList = doc.getElementsByTagName("age");
String age = nodeList.item(0).getTextContent();
System.out.println("Name: " + name);
System.out.println("Age: " + age);
- SAX解析器:SAX解析器是基于事件驱动的解析器,可以在解析XML文档时触发事件,并通过事件处理程序来处理XML文档。下面是一个使用SAX解析器解析String类型的XML内容的示例:
String xmlContent = "<root><name>John</name><age>25</age></root>";
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
DefaultHandler handler = new DefaultHandler() {
boolean bName = false;
boolean bAge = false;
public void startElement(String uri, String localName,String qName,
Attributes attributes) throws SAXException {
if (qName.equalsIgnoreCase("name")) {
bName = true;
}
if (qName.equalsIgnoreCase("age")) {
bAge = true;
}
}
public void characters(char ch[], int start, int length) throws SAXException {
if (bName) {
System.out.println("Name: " + new String(ch, start, length));
bName = false;
}
if (bAge) {
System.out.println("Age: " + new String(ch, start, length));
bAge = false;
}
}
};
saxParser.parse(new InputSource(new StringReader(xmlContent)), handler);
- JAXB解析器:JAXB是Java架构与XML绑定的缩写,可以将XML文档映射为Java对象,方便地进行处理。下面是一个使用JAXB解析器解析String类型的XML内容的示例:
String xmlContent = "<root><name>John</name><age>25</age></root>";
JAXBContext jaxbContext = JAXBContext.newInstance(Root.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
Root root = (Root) unmarshaller.unmarshal(new StringReader(xmlContent));
System.out.println("Name: " + root.getName());
System.out.println("Age: " + root.getAge());
以上示例中,Root类是一个Java类,使用了JAXB注解来映射XML元素。例如:
@XmlRootElement
public class Root {
private String name;
private int age;
public String getName() {
return name;
}
@XmlElement
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
@XmlElement
public void setAge(int age) {
this.age = age;
}
}
原文地址: https://www.cveoy.top/t/topic/b3fD 著作权归作者所有。请勿转载和采集!