我正在尝试从MIDP设备获取XML数据到Servlet。 Servlet正在如下获取数据 -
DataInputStream dis = new DataInputStream((InputStream) request.getInputStream());
String readUTF = dis.readUTF();
从MIDP完成后我认为它已经结束了。但现在我无法将readUTF转换为InputStream。我想解析xml字符串。我使用了kXML 2.3.0,这里是代码 -
XmlPullParser xpp = new KXmlParser();
try {
xpp.setInput(new InputStreamReader(new ByteArrayInputStream(readUTF.getBytes("UTF-8"))));
int event = xpp.getEventType();
if (event != xpp.END_DOCUMENT) {
System.out.println("Inside Document");
if (xpp.getName() != null) {
System.out.println("The tag is not null");
if (xpp.getName().equals("title")) {
System.out.println("Title =" + xpp.getText());
} else if (xpp.getName().equals("note")) {
System.out.println("Note =" + xpp.getText());
} else if (xpp.getName().equals("priority")) {
System.out.println("Priority =" + xpp.getText());
}
}
event = xpp.next();
}
}
我遇到的问题是只打印内幕文件。这意味着第二个print语句没有机会执行。我使用Dom4j做同样的事情。
SAXReader sr = new SAXReader();
sr.read(stringReader);
System.out.println(sr.getDocumentFactory().createDocument().asXML());
结果就是这个 -
INFO: <?xml version="1.0" encoding="UTF-8"?>
原始字符串是 - <?xml version='1.0' encoding='UTF-8' ?> <data> <task><title>dsfsdfds</title><note>null</note><priority>High</priority></task><task><title>sdfsdfdsf</title><note>null</note><priority>High</priority></task> </data>
我为它验证了XML并且它完美地运行。将UTF-8转换为InputStreams有问题吗?还有另一种方法可以将我的XML String解析为数据。
答案 0 :(得分:3)
我不知道您的XmlPullParser
代码,但您的dom4j代码已损坏。您已经要求SAXReader为您提供文档 factory ,然后您要求提供新文档,然后打印它。换句话说,这与从stringReader
读取的数据无关。您忽略 read
来电的结果。试试这个:
SAXReader sr = new SAXReader();
Document doc = sr.read(stringReader);
System.out.println(doc.asXML());
查看是否显示完整的XML。
我注意到在XmlPullParser
代码中你没有像往常那样循环 - 你只是读取第一个节点,检查它,然后重新分配event
的值 - 然后没有做任何其他事情。