[英]parse string xml with JDOM
我正在嘗試使用JDOM解析字符串xml,但是在我打印時將顯示空白。 不要從我的xml字符串中打印任何數據。
public static void main(String[] args) throws IOException {
List resultado = null;
resultado = new ArrayList<>();
resultado = listarDatos();
XStream xstream = new XStream();
String xml = xstream.toXML(resultado);
String adicionar = "<?xml version = \"1.0\" encoding= \"UTF-8\"?> \n";
String doctype = "<!DOCTYPE list \n>";
String xml_m = adicionar + doctype + xml.replace("<newwebservicematerias.Materia>", "<ListaMaterias>").replace("</newwebservicematerias.Materia>", "</ListaMaterias>");
//System.out.println(xml_m);
org.jdom.input.SAXBuilder saxBuilder = new SAXBuilder();
try {
org.jdom.Document doc = saxBuilder.build(new StringReader(xml_m));
String message = doc.getRootElement().getText();
System.out.println(message);
} catch (JDOMException e) {
// handle JDOMException
} catch (IOException e) {
// handle IOException
}
}
並嘗試與xerces和jaxp一起使用,但是它們使我出錯。
您代碼中的getText()
方法無法達到目的。 它返回元素內的文本,但由於只有文本而不是子元素,因此未打印所需的輸出。 這是修改后的代碼:
package com.test;
import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.XMLOutputter;
import com.thoughtworks.xstream.XStream;
public class JdomExample {
public static void main(String[] args) throws IOException {
List<String> resultado = listarDatos();
XStream xstream = new XStream();
String xml = xstream.toXML(resultado);
// System.out.println("xml = " + xml);
String adicionar = "<?xml version = \"1.0\" encoding= \"UTF-8\"?> \n";
String doctype = "<!DOCTYPE list \n>";
String xml_m = adicionar + doctype + xml.replace("<newwebservicematerias.Materia>", "<ListaMaterias>")
.replace("</newwebservicematerias.Materia>", "</ListaMaterias>");
// System.out.println("xml_m = " + xml_m);
SAXBuilder saxBuilder = new SAXBuilder();
try {
Document doc = saxBuilder.build(new StringReader(xml_m));
// System.out.println("doc = " + doc);
Element message = doc.getRootElement();
print(message);
} catch (JDOMException e) {
// handle JDOMException
} catch (IOException e) {
// handle IOException
}
}
public static void print(Element element) {
XMLOutputter outp = new XMLOutputter();
String s = outp.outputString(element);
System.out.println(s);
}
private static List<String> listarDatos() {
List<String> list = new ArrayList<>();
list.add("hello");
list.add("world");
return list;
}
}
輸出:
<list>
<string>hello</string>
<string>world</string>
</list>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.