【问题标题】:How to extract data from XML?如何从 XML 中提取数据?
【发布时间】:2014-12-05 05:47:47
【问题描述】:
我的 XML 将如下所示:
< Header>
< Feature web="true" mob="false" app="true">some data< /feature>
< /Header>
我想要 java 文件,其中 web、mob、app 的数据为布尔值,somedata 为 java 中的字符串。如何从xml中提取数据?请帮忙
【问题讨论】:
标签:
java
xml
jakarta-ee
xml-parsing
【解决方案1】:
您可以使用java提供的XML转换。这将返回一个名为 dom objects 的东西,您可以使用它来检索您在 xml 中的任何数据。在您的情况下,功能标签的某些属性和其他属性。
按照本教程https://docs.oracle.com/javase/tutorial/jaxp/dom/readingXML.html
快速试用的示例代码 ;-)
public class TransformXml {
public static void main(String[] args) {
String xmlStr = "<Header><feature web=\"true\" mob=\"false\" app=\"true\">some data</feature></Header>";
Document doc = convertStringToDocument(xmlStr);
String str = convertDocumentToString(doc);
System.out.println(str);
}
private static String convertDocumentToString(Document doc) {
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer;
try {
transformer = tf.newTransformer();
// below code to remove XML declaration
// transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION,
// "yes");
StringWriter writer = new StringWriter();
transformer.transform(new DOMSource(doc), new StreamResult(writer));
String output = writer.getBuffer().toString();
return output;
} catch (TransformerException e) {
e.printStackTrace();
}
return null;
}
private static Document convertStringToDocument(String xmlStr) {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
try {
builder = factory.newDocumentBuilder();
Document doc = builder.parse(new InputSource(new StringReader(xmlStr)));
return doc;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}