- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图将 XML 字符串从服务器传递到解析器并创建一个对象数组列表,但我目前得到的只是一个空数组列表。
获取和解析 XML 的代码
package parkinglot_api;
import java.net.*;
import java.sql.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.io.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
public class ParkingLotInstance {
/*
* Parking Lot API instance
* Constructor
* URL - String
* getParkingLotInfo()
* Returns XML from Specified Server
* parseParkingLotInfo()
* XML - String
* Returns ArrayList of Lot Objects
*/
public static URL serverURL;
public ParkingLotInstance( URL connurl ){
serverURL = connurl;
}
public String getParkingLotInfo(){
//Get a response from API server
URL APIurl = this.serverURL;
String APIresponse = "";
System.out.println(APIurl);
try {
APIurl.openConnection();
BufferedReader in = new BufferedReader(
new InputStreamReader(APIurl.openStream()));
String output;
while ((output = in.readLine()) != null)
APIresponse += output;
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return APIresponse;
}
public ArrayList parseParkingLotInfo( String XML ){
ArrayList lots = new ArrayList();
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
//Using factory get an instance of document builder
dbf.setNamespaceAware(false);
DocumentBuilder builder = dbf.newDocumentBuilder();
InputSource inStream = new InputSource();
inStream.setCharacterStream(new StringReader(XML));
Document dom = builder.parse(inStream);
//get the root element
Element docEle = dom.getDocumentElement();
//get a nodelist of elements
NodeList nl = docEle.getElementsByTagName("Lot");
if(nl != null && nl.getLength() > 0) {
for(int i = 0 ; i < nl.getLength();i++) {
//get the employee element
Element el = (Element)nl.item(i);
//get the Employee object
Lot l = parseLot(el);
//add it to list
lots.add(l);
}
}
}catch(ParserConfigurationException pce) {
pce.printStackTrace();
}catch(SAXException se) {
se.printStackTrace();
}catch(IOException ioe) {
ioe.printStackTrace();
}
return lots;
}
public Lot parseLot(Element el){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-mm-dd");
//Initialize Parking Lot Variables
int id = getIntValue(el,"id");
int occupancy = getIntValue(el,"occupancy");
Boolean status = Boolean.parseBoolean(getTextValue(el,"status"));
String name = getTextValue(el,"name");
Date updated = null;
try {
updated = (Date) dateFormat.parse(getTextValue(el,"updated"));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String description = getTextValue(el,"description");
//Construct Parking Lot
Lot lot = new Lot(
id
, occupancy
, status
, name
, updated
, description
);
return lot;
}
/**
* I take a xml element and the tag name, look for the tag and get
* the text content
* i.e for <employee><name>John</name></employee> xml snippet if
* the Element points to employee node and tagName is 'name' I will return John
*/
private String getTextValue(Element ele, String tagName) {
String textVal = null;
NodeList nl = ele.getElementsByTagName(tagName);
if(nl != null && nl.getLength() > 0) {
Element el = (Element)nl.item(0);
textVal = el.getFirstChild().getNodeValue();
}
return textVal;
}
/**
* Calls getTextValue and returns a int value
*/
private int getIntValue(Element ele, String tagName) {
//in production application you would catch the exception
return Integer.parseInt(getTextValue(ele,tagName));
}
}
package parkinglot_api;
import java.util.Date;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
public class Lot {
/*
* Parking Lot Object
* ID: Unique Identifier
* Occupancy: The Current Amount of Cars in the Lot
* Status: Describes if the Lot is Open or Closed
* Name: A String Identifier of the Lot
* Updated: The Last time the Lot's current status record was updated.
*/
//Initiate Parking Lot Fields
public int id;
public int occupancy;
public Boolean status;
public String description;
public String name;
public Date updated;
//Parking Lot Constructor
public Lot(
int newId
, int newOccupancy
, Boolean newStatus
, String newName
, Date newUpdated
, String newDescription
){
id = newId;
occupancy = newOccupancy;
status = newStatus;
name = newName;
updated = newUpdated;
description = newDescription;
}
//Convert Java Object to JSON
public String toJSON(){
Gson gson = new GsonBuilder().setPrettyPrinting().create();
String jsonLot = gson.toJson(this);
return jsonLot;
}
//Convert Java Object to XML
public String toXML(){
XStream xstream = new XStream(new DomDriver());
xstream.alias("lot", Lot.class);
String xml = xstream.toXML(this);
return xml;
}
}
package parkinglot_api;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
public class Example {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
URL serverURL;
try {
serverURL = new URL("http://localhost:8080");
ParkingLotInstance API = new ParkingLotInstance(serverURL);
String parkingLotXML = API.getParkingLotInfo();
ArrayList Lots = API.parseParkingLotInfo(parkingLotXML);
System.out.println(Lots);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
<?xml version='1.0' ?>
<campus count='4'>
<lot>
<id>1</id>
<occupancy>25</occupancy>
<status>true</status>
<description></description>
<name>lot1</name>
<updated class="sql-date">2012-10-05</updated>
</lot>
<lot>
<id>2</id>
<occupancy>25</occupancy>
<status>true</status>
<description></description>
<name>lot2</name>
<updated class="sql-date">2012-10-06</updated>
</lot>
<lot>
<id>3</id>
<occupancy>25</occupancy>
<status>false</status>
<description></description>
<name>lot3</name>
<updated class="sql-date">2012-10-07</updated>
</lot>
<lot>
<id>4</id>
<occupancy>25</occupancy>
<status>true</status>
<description></description>
<name>lot4</name>
<updated class="sql-date">2012-11-07</updated>
</lot>
</campus>
最佳答案
getElementsByTagName("...")
区分大小写,你有 "lot"
在您的文件和 docEle.getElementsByTagName("Lot")
中在您的代码中,尝试将其替换为 docEle.getElementsByTagName("lot")
关于Java XML 字符串解析为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10506812/
我一直在使用 AJAX 从我正在创建的网络服务中解析 JSON 数组时遇到问题。我的前端是一个简单的 ajax 和 jquery 组合,用于显示从我正在创建的网络服务返回的结果。 尽管知道我的数据库查
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
我在尝试运行 Android 应用程序时遇到问题并收到以下错误 java.lang.NoClassDefFoundError: com.parse.Parse 当我尝试运行该应用时。 最佳答案 在这
有什么办法可以防止etree在解析HTML内容时解析HTML实体吗? html = etree.HTML('&') html.find('.//body').text 这给了我 '&' 但我想
我有一个有点疯狂的例子,但对于那些 JavaScript 函数作用域专家来说,它看起来是一个很好的练习: (function (global) { // our module number one
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 8 年前。 Improve th
我需要编写一个脚本来获取链接并解析链接页面的 HTML 以提取标题和其他一些数据,例如可能是简短的描述,就像您链接到 Facebook 上的内容一样。 当用户向站点添加链接时将调用它,因此在客户端启动
在 VS Code 中本地开发时,包解析为 C:/Users//AppData/Local/Microsoft/TypeScript/3.5/node_modules/@types//index而不是
我在将 json 从 php 解析为 javascript 时遇到问题 这是我的示例代码: //function MethodAjax = function (wsFile, param) {
我在将 json 从 php 解析为 javascript 时遇到问题 这是我的示例代码: //function MethodAjax = function (wsFile, param) {
我被赋予了将一种语言“翻译”成另一种语言的工作。对于使用正则表达式的简单逐行方法来说,源代码过于灵活(复杂)。我在哪里可以了解更多关于词法分析和解析器的信息? 最佳答案 如果你想对这个主题产生“情绪化
您好,我在解析此文本时遇到问题 { { { {[system1];1;1;0.612509325}; {[system2];1;
我正在为 adobe after effects 在 extendscript 中编写一些代码,最终变成了 javascript。 我有一个数组,我想只搜索单词“assemble”并返回整个 jc3_
我有这段代码: $(document).ready(function() { // }); 问题:FB_RequireFeatures block 外部的代码先于其内部的代码执行。因此 who
背景: netcore项目中有些服务是在通过中间件来通信的,比如orleans组件。它里面服务和客户端会指定网关和端口,我们只需要开放客户端给外界,服务端关闭端口。相当于去掉host,这样省掉了些
1.首先贴上我试验成功的代码 复制代码 代码如下: protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
什么是 XML? XML 指可扩展标记语言(eXtensible Markup Language),标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。 你可以通过本站学习 X
【PHP代码】 复制代码 代码如下: $stmt = mssql_init('P__Global_Test', $conn) or die("initialize sto
在SQL查询分析器执行以下代码就可以了。 复制代码代码如下: declare @t varchar(255),@c varchar(255) declare table_cursor curs
前言 最近练习了一些前端算法题,现在做个总结,以下题目都是个人写法,并不是标准答案,如有错误欢迎指出,有对某道题有新的想法的友友也可以在评论区发表想法,互相学习🤭 题目 题目一: 二维数组中的
我是一名优秀的程序员,十分优秀!