[英]Using Jdom to read xml
到目前為止,我是第一次使用JDOM,效果不是很好。 另外,我還是一個分配了Java項目的.NET人員。
我有這個xml文件,正在嘗試讀取所有元素。
這是我到目前為止的代碼。 響應是我獲取xml數據的地方。 我可以閱讀根元素,但是我正在努力閱讀這些元素。 有任何想法嗎??
JSONObject ticket = data.getDataJSON();
String id = ticket.getString(SDPTicketKeyValues.Key.ID);
String input_data = "";
Content response = Request
.Post(REST_URL + REQUEST_RESOURCE + id + "/" + NOTES_RESOURCE)
.bodyForm(
Form.form().add(TECHKEY_PARAMETER, MYTECH_KEY)
.add(OPERATION_PARAMETER, GETNOTES_OPERATION)
.add("INPUT_DATA", input_data)
.build())
.execute().returnContent();
SAXBuilder builder = new SAXBuilder();
StringReader reader = new StringReader(response.asString());
Document document = (Document) builder.build(reader);
Element rootNode = document.getRootElement();
這是xml文件
<?xml version="1.0" encoding="UTF-8"?>
<API version="1.0">
<response>
<operation name="GET_NOTES">
<result>
<statuscode>200</statuscode>
<status>Success</status>
<message>Notes details fetched successfully.</message>
</result>
<Details>
<Notes>
<Note URI="http://localhost:8080/sdpapi/request/10/notes/901/">
<parameter>
<name>isPublic</name>
<value>false</value>
</parameter>
<parameter>
<name>notesText</name>
<value>dfgfdgdfgdfgdgdgdgdgdg</value>
</parameter>
<parameter>
<name>userName</name>
<value>Howard Stern</value>
</parameter>
<parameter>
<name>notesDate</name>
<value>1373971580200</value>
</parameter>
</Note>
<Note URI="http://localhost:8080/sdpapi/request/10/notes/612/">
<parameter>
<name>isPublic</name>
<value>false</value>
</parameter>
<parameter>
<name>notesText</name>
<value>dfgdfgdfgdfgdfgdfgdfgdf</value>
</parameter>
<parameter>
<name>userName</name>
<value>Howard Stern</value>
</parameter>
<parameter>
<name>notesDate</name>
<value>1373967102396</value>
</parameter>
</Note>
<Note URI="http://localhost:8080/sdpapi/request/10/notes/611/">
<parameter>
<name>isPublic</name>
<value>true</value>
</parameter>
<parameter>
<name>notesText</name>
<value>dfgdfgdfgdfgdfgdfgdgdgdgd</value>
</parameter>
<parameter>
<name>userName</name>
<value>Howard Stern</value>
</parameter>
<parameter>
<name>notesDate</name>
<value>1373967097117</value>
</parameter>
</Note>
</Notes>
</Details>
</operation>
</response>
</API>
我決定以其他方式進行操作,現在可以正常工作了。 這是代碼。
Document xml = loadXMLFromString(response.asString());
NodeList notesList = xml.getElementsByTagName(XML_NOTE);
List<Note> notes = new ArrayList<Note>();
for (int notesLoop = 0; notesLoop < notesList.getLength(); notesLoop++) {
Element notesNode = (Element) notesList.item(notesLoop);
Note newNote = new Note();
String iD = notesNode.getAttribute("URI").substring(notesNode.getAttribute("URI").lastIndexOf("/"));
newNote.setUri(notesNode.getAttribute("URI"));
NodeList paramList = notesNode.getElementsByTagName(XML_PARAMETER);
for (int paramsLoop = 0; paramsLoop < paramList.getLength(); paramsLoop++) {
Element paramsNode = (Element) paramList.item(paramsLoop);
Params ll = new Params();
NodeList name = paramsNode.getElementsByTagName("name");
NodeList value = paramsNode.getElementsByTagName("value");
ll.setName(name.item(0).getFirstChild().getNodeValue());
ll.setValue(value.item(0).getFirstChild().getNodeValue());
newNote.getParams().add(ll);
}
notes.add(newNote);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.