从xml到java获取数据

从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

如何从用php生成的java xml中获取数据。 我需要数据在我的android应用程序的列表视图中显示它

phpcode从mysqlquery获取数据,并获取variabelxml中的数组,然后将其放在echo out上。mysqlquery的数据来自android应用程序的POST

phpcode:

//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上完成此工作的最佳框架。