从 PHP 脚本获取和解释 XML 文件响应的最简单方法是啥? [复制]
Posted
技术标签:
【中文标题】从 PHP 脚本获取和解释 XML 文件响应的最简单方法是啥? [复制]【英文标题】:Which is the easiest approach to get & interpret a XML file response from a PHP script? [duplicate]从 PHP 脚本获取和解释 XML 文件响应的最简单方法是什么? [复制] 【发布时间】:2012-03-31 18:38:13 【问题描述】:我需要在我的 Android 应用中添加一个简单的功能。
我必须连接到这个虚构的脚本:http://test/getMagazinesList.php
脚本会返回一个像这样的 XML 文件:
<magazines>
<magazine title="APP 1" id="1">
<description>Prueba real</description>
<miniature>http://web/miniature.jpg</miniature>
</magazine>
<magazine title="APP 2" id="2">
<description>Prueba real 2</description>
<miniature>http://web/miniature2.jpg</miniature>
</magazine>
<magazine title="APP 3" id="3">
<description>Prueba real 3</description>
<miniature>http://web/miniature3.jpg</miniature>
</magazine>
</magazines>
目标是将 XML 的所有信息存储在这些 MagazinePreview 对象的列表中:
public class MagazinePreview
String title;
String id;
String description;
String miniatureUrl;
Bitmap miniature;
public MagazinePreview(String title, String id, String description,
String miniatureUrl)
super();
this.title = title;
this.id = id;
this.description = description;
this.miniatureUrl = miniatureUrl;
连接到该 PHP 并获取 XML 并解释它以将信息存储在 MagazinePreview 类对象列表中的最简单方法是什么?
谢谢
【问题讨论】:
以及右侧相关部分中更多合适的副本。提问前请使用搜索功能。 Do your homework. 你也可以参考这里。 ***.com/questions/4624440/… @Pableras84 “最简单的方法”没有建设性。据我所知,OP 只是询问如何处理 XML,我们得到了任何语言的答案。 这里没有提及 PHP 【参考方案1】:您可以为此使用Simple XML。
用这些注释装饰你的MagazinePreview
类:
public class MagazinePreview
@Attribute
String title;
@Attribute
String id;
@Element
String description;
@Element(name="miniatura")
String miniatureUrl;
Bitmap miniature;
public MagazinePreview(String title, String id,
String description, String miniatureUrl)
super();
...
现在为您的杂志收藏添加一个类。添加一个执行 XML 字符串反序列化的方法,在执行过程中实例化您的对象:
@Root
public class MagazinePreviews
@ElementList(name="magazines")
ArrayList<MagazinePreviews> previews;
public static MagazinePreviews Load(String xml)
Serializer serializer = new Persister();
return serializer.read(MagazinePreviews.class, xml);
这将为您提供一个 MagazinePreviews
实例,其中包含您的 MagazinePreview
实例。简单的 XML 完成了所有繁重的工作。它将使用注解(@Element
、@Attribute
)来知道哪些数据应该放在哪些字段中。
您仍然需要一种方法来连接到您的 PHP 服务器脚本。假设它是一个简单地返回 XML 字符串的脚本,你可以使用这个:
public String getXML() throws Exception
StringBuilder builder = new StringBuilder();
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("myscript.php");
HttpResponse response = httpclient.execute(httpget);
int statuscode = response.getStatusLine().getStatusCode();
if(statuscode == 200)
HttpEntity entity = response.getEntity();
InputStream content = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(content));
String line;
while ((line = reader.readLine()) != null) builder.append(line);
else throw new Exception("HTTP error: " + String.valueOf(statuscode));
return builder.toString();
此代码在服务器上调用您的 PHP 脚本,检索响应(假定为 XML 字符串),或在请求失败时抛出错误。
【讨论】:
我可以在没有任何限制的商业应用上使用 SimpleXML 吗? 为什么在字符串 minituraUrl 之前使用 "@Element(name="miniatura")"; ??还有,为什么title & id 是属性,而description 是元素? 您可以不受任何限制地使用 SimpleXML。您必须对 XML 属性使用@Attribute
注释,对 XML 元素使用 @Element
注释。我将@Element(name="miniatura")
用于“String mini-Url”,因为字段名称与 XML 中使用的名称不同。
谢谢,我现在明白了。现在的问题是如何将我用你最后一种方法获得的字符串 xml 转换为对象杂志预览。我怎样才能实现最后一件事?
当然是调用MagazinePreviews.Load(String xml)
方法。以上是关于从 PHP 脚本获取和解释 XML 文件响应的最简单方法是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
SpringMVC4 + Spring + MyBatis3 基于注解的最简配置