从xml到java获取数据
如何从用php生成的java xml中获取数据。 我需要数据在我的android应用程序的列表视图中显示它 phpcode从mysqlquery获取数据,并获取variabelxml中的数组,然后将其放在echo out上。mysqlquery的数据来自android应用程序的POST phpcode:从xml到java获取数据,java,php,android,xml,Java,Php,Android,Xml,如何从用php生成的java xml中获取数据。 我需要数据在我的android应用程序的列表视图中显示它 phpcode从mysqlquery获取数据,并获取variabelxml中的数组,然后将其放在echo out上。mysqlquery的数据来自android应用程序的POST phpcode: //MySQL zugangsdaten $server = "server"; $datenbank = "database"; $username = "username"; $passwo
//MySQL zugangsdaten
$server = "server";
$datenbank = "database";
$username = "username";
$passwort = "password";
//Verbindung zur MySqldatenbank herstellen
$link = mysql_connect($server, $username, $passwort);
if (!$link) die(mysql_error());
//Datenbank auswählen
$db = mysql_select_db($datenbank, $link);
//<---- End Login ---->
$_linie = htmlspecialchars(mysql_real_escape_string($_POST["linie"]), ENT_COMPAT);
$_richtung = htmlspecialchars(mysql_real_escape_string($_POST["richtung"]), ENT_COMPAT);
$sql_befehl = "SELECT * From Kontrolleure where linie = '$_linie' AND richtung = '$_richtung'";
$query = mysql_query($sql_befehl, $link);
if(mysql_error())
{
die(mysql_error());
}
while($result = mysql_fetch_array($query, MYSQL_ASSOC))
{
$count = $count + 1;
$xml = $xml."<Konduktor>";
$xml = $xml."<id>".$result['id']."</id>";
$xml = $xml."<linie>".$result['linie']."</linie>";
$xml = $xml."<endstation>".$result['richtung']."</endstation>";
$xml = $xml."<station>".$result['station']."</station>";
$xml = $xml."<zeit>".$result['zeit']."</zeit>";
$xml = $xml."</Konduktor>";
}
echo "<Konduktors count=\"$count\">";
echo $xml;
echo "</Konduktors>";
//MySQL zugangdaten
$server=“server”;
$datenbank=“数据库”;
$username=“username”;
$passwort=“password”;
//Verbindung zur MySqldatenbank herstellen
$link=mysql\u connect($server、$username、$passwort);
如果(!$link)死亡(mysql_error());
//Datenbank auswählen
$db=mysql\u select\u db($datenbank,$link);
//
$\u linie=htmlspecialchars(mysql\u real\u escape\u字符串($\u POST[“linie]”),ENT\u COMPAT);
$\u richtong=htmlspecialchars(mysql\u real\u escape\u字符串($\u POST[“richtong”]),ENT\u COMPAT);
$sql_befehl=“从Kontrolleure中选择*,其中linie='$\'u linie'和richtoug='$\'u richtoug'”;
$query=mysql\u query($sql\u befehl,$link);
if(mysql_error())
{
die(mysql_error());
}
而($result=mysql\u fetch\u数组($query,mysql\u ASSOC))
{
$count=$count+1;
$xml=$xml.“;
$xml=$xml.“$result['id']”;
$xml=$xml.“$result['linie']”;
$xml=$xml.“$result['richtung']”;
$xml=$xml.“$result['station']”;
$xml=$xml.“$result['zeit']”;
$xml=$xml.“;
}
回声“;
echo$xml;
回声“;
xml响应如下所示:
<Konduktors count="3">
<Konduktor>
<id>29</id>
<linie>S23</linie>
<endstation>Langenthal</endstation>
<station>Brugg AG</station>
<zeit>17:36:34</zeit>
</Konduktor>
<Konduktor>
<id>30</id>
<linie>S23</linie>
<endstation>Langenthal</endstation>
<station>Lupfig</station>
<zeit>17:37:12</zeit>
</Konduktor>
<Konduktor>
<id>32</id>
<linie>S23</linie>
<endstation>Langenthal</endstation>
<station>Birr</station>
<zeit>16:23:30</zeit>
</Konduktor>
</Konduktors>
29
S23
兰根塔尔
布鲁格公司
17:36:34
30
S23
兰根塔尔
卢菲格
17:37:12
32
S23
兰根塔尔
比尔
16:23:30
谢谢大家! 有一些xml解析工具可以解决这类问题。在我的工作中,我们使用XMLBeans:
我发现使用它非常简单,而且我对这类东西非常业余。JAXB很容易处理:
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
public class JaxbExample {
public static void main(String[] args) throws JAXBException {
String xml =
"<Konduktors count=\"3\">\n" +
" <Konduktor>\n" +
" <id>29</id>\n" +
" <linie>S23</linie>\n" +
" <endstation>Langenthal</endstation>\n" +
" <station>Brugg AG</station>\n" +
" <zeit>17:36:34</zeit>\n" +
" </Konduktor>\n" +
" <Konduktor>\n" +
" <id>30</id>\n" +
" <linie>S23</linie>\n" +
" <endstation>Langenthal</endstation>\n" +
" <station>Lupfig</station>\n" +
" <zeit>17:37:12</zeit>\n" +
" </Konduktor>\n" +
" <Konduktor>\n" +
" <id>32</id>\n" +
" <linie>S23</linie>\n" +
" <endstation>Langenthal</endstation>\n" +
" <station>Birr</station>\n" +
" <zeit>16:23:30</zeit>\n" +
" </Konduktor>\n" +
"</Konduktors>";
Object object = JAXBContext.newInstance(Konduktors.class).createUnmarshaller().unmarshal(new StringReader(xml));
System.out.println(object);
}
@XmlRootElement(name = "Konduktors")
static class Konduktors {
private List<Konductor> konductors = new ArrayList<Konductor>();
@XmlElement(name = "Konduktor")
public List<Konductor> getKonductors() {
return konductors;
}
public void setKonductors(List<Konductor> konductors) {
this.konductors = konductors;
}
@Override
public String toString() {
return "Konductors{" +
"konductors=" + konductors +
'}';
}
}
static class Konductor {
private int id;
private String linie;
private String endstation;
private String zeit;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getLinie() {
return linie;
}
public void setLinie(String linie) {
this.linie = linie;
}
public String getEndstation() {
return endstation;
}
public void setEndstation(String endstation) {
this.endstation = endstation;
}
public String getZeit() {
return zeit;
}
public void setZeit(String zeit) {
this.zeit = zeit;
}
@Override
public String toString() {
return "Konductor{" +
"id=" + id +
", linie='" + linie + '\'' +
", endstation='" + endstation + '\'' +
", zeit='" + zeit + '\'' +
'}';
}
}
}
import javax.xml.bind.JAXBContext;
导入javax.xml.bind.JAXBException;
导入javax.xml.bind.annotation.xmlement;
导入javax.xml.bind.annotation.XmlRootElement;
导入java.io.StringReader;
导入java.util.ArrayList;
导入java.util.List;
公共类JAXBE示例{
公共静态void main(字符串[]args)抛出JAXBEException{
字符串xml=
“\n”+
“\n”+
“29\n”+
“S23\n”+
“Langenthal\n”+
“布鲁格公司\n”+
“17:36:34\n”+
“\n”+
“\n”+
“30\n”+
“S23\n”+
“Langenthal\n”+
“Lupfig\n”+
“17:37:12\n”+
“\n”+
“\n”+
“32\n”+
“S23\n”+
“Langenthal\n”+
“比尔\n”+
“16:23:30\n”+
“\n”+
"";
Object Object=JAXBContext.newInstance(Konduktors.class).createUnmarshaller().unmarshal(新StringReader(xml));
System.out.println(对象);
}
@XmlRootElement(name=“Konduktors”)
静态类Konduktors{
private List konductors=new ArrayList();
@XmlElement(name=“Konduktor”)
公共列表getKonductors(){
返回导体;
}
公共无效集合控制器(列表控制器){
this.konductors=konductors;
}
@凌驾
公共字符串toString(){
返回“conductors{”+
“konductors=“+konductors+
'}';
}
}
静态类导体{
私有int-id;
私用线绳;
专用字符串终端站;
私有字符串zeit;
公共int getId(){
返回id;
}
公共无效集合id(内部id){
this.id=id;
}
公共字符串getLinie(){
返回线;
}
公共无效设置线(字符串线){
this.linie=linie;
}
公共字符串getEndstation(){
返回端站;
}
公共无效设置终点站(字符串终点站){
this.endstation=endstation;
}
公共字符串getZeit(){
返回zeit;
}
公共void setZeit(字符串zeit){
this.zeit=zeit;
}
@凌驾
公共字符串toString(){
返回“conductor{”+
“id=”+id+
,linie=''+linie+'\''+
“,endstation='”+endstation+'\'”+
“,zeit='”+zeit+'\''+
'}';
}
}
}
其他选项包括或用于更高级别的抽象,或用于较低级别的抽象——您必须对这些抽象做更多的工作,但要有更多的灵活性。使用XML解析器,如大量教程中所示。您可以使用。两点:JAXB不在Android上运行,简单XML是在Android IMO上完成此工作的最佳框架。