Php 如何在Flex中创建和访问带有属性的xml

Php 如何在Flex中创建和访问带有属性的xml,php,mysql,xml,Php,Mysql,Xml,所以我的问题是,我正在尝试制作一个应用程序,它主要从MySQL数据库中检索数据,将数据划分为具有特定创建日期的表。 现在,我有一个PHP脚本,它允许我从数据库中提取数据并将其放入XML文件中。问题是,我没有对其进行日期排序,这在应用程序中非常重要,但我不知道如何制作脚本,从MySQL db提取数据并将数据转换为以下格式: <allitems> <items date="29-11-2011"> <item> &l

所以我的问题是,我正在尝试制作一个应用程序,它主要从MySQL数据库中检索数据,将数据划分为具有特定创建日期的表。 现在,我有一个PHP脚本,它允许我从数据库中提取数据并将其放入XML文件中。问题是,我没有对其进行日期排序,这在应用程序中非常重要,但我不知道如何制作脚本,从MySQL db提取数据并将数据转换为以下格式:

<allitems>
    <items date="29-11-2011">
        <item>
            <title>Something</title>
            <title2>Something else</title2>
        </item>
        <item>
            <title>Something2</title>
            <title2>Something else2</title2>
        </item>
        <item>
            <title>Something3</title>
            <title2>Something else3</title2>
        </item>
    </items>
</allitems>
这是一张图片,我指的是flex应用程序中的数据使用情况(在列表中):

假设您有一个php脚本,它从mySQL中提取数据,并在

您将使用一个HTTPService来获得它

private var service:HTTPService;

//Run this on application initialize
private function init() {
    service=new HTTPService();
    service.addEventListener(ResultEvent.RESULT, sResult);
    service.resultFormat="xml";
    service.url="http://myserver.com/myphp.php?arg1=val1&arg2=val2";
}

private function sResult(e:ResultEvent):void {
    var o:Object = xmlStringToObject((e.result as XMLNode).toString());
    //Now you have your xml as an object
    trace(o.allitems.items.getItemAt(0).date); //gives 29-11-2011
    trace(o.allitems.items.getItemAt(0).item.getItemAt(0)); //{title: Something, title2: Something else}
    //You get the pattern, if not, debug and watch o
}

public function xmlStringToObject(xmlStr:String):Object{
    var xmlDoc:XMLDocument = new XMLDocument(xmlStr);
    xmlDoc.ignoreWhite=true;
    var decoder:SimpleXMLDecoder = new SimpleXMLDecoder(true);
    var resultObj:Object = decoder.decodeXML(xmlDoc);
     return resultObj;
}

不要真正抓住你问题的重点。您有一个MySQL数据库和一个php服务器。无论如何,您都要使用php从数据库中提取数据。为什么要将其发送到Flex,然后创建xml?您可以在php中创建xml并将其发送到flex应用程序。为此,我将回答您的问题,因为我希望服务器创建一个XML文件,然后将其发送到flex应用程序,问题是我真的不知道,如果我有多个节点,如何创建XML。我基本上需要知道,如何输出xml,所以我有不止一个节点和不止一个节点在其中,然后如何读取flex应用程序中的属性()。就这些。我检查过了,但我认为它不完全回答我的问题。我不知道我提到的php脚本,我需要使用从XML中检索的数据,最好是以可绑定的形式(label=“{data.title}”)。您的回答解释了如何检索属性,但我主要需要知道创建XML的PHP脚本。那么这与flex完全无关?它与flex有关,但主要与PHP有关。我把flex作为标签之一,因为这个问题也与flex有关,但我需要一个关于如何将数据插入列表的答案,正如我在图片上所示:谢谢,这就是我需要的!现在,我只需要了解如何在flex中使用'date'属性。
private var service:HTTPService;

//Run this on application initialize
private function init() {
    service=new HTTPService();
    service.addEventListener(ResultEvent.RESULT, sResult);
    service.resultFormat="xml";
    service.url="http://myserver.com/myphp.php?arg1=val1&arg2=val2";
}

private function sResult(e:ResultEvent):void {
    var o:Object = xmlStringToObject((e.result as XMLNode).toString());
    //Now you have your xml as an object
    trace(o.allitems.items.getItemAt(0).date); //gives 29-11-2011
    trace(o.allitems.items.getItemAt(0).item.getItemAt(0)); //{title: Something, title2: Something else}
    //You get the pattern, if not, debug and watch o
}

public function xmlStringToObject(xmlStr:String):Object{
    var xmlDoc:XMLDocument = new XMLDocument(xmlStr);
    xmlDoc.ignoreWhite=true;
    var decoder:SimpleXMLDecoder = new SimpleXMLDecoder(true);
    var resultObj:Object = decoder.decodeXML(xmlDoc);
     return resultObj;
}
// query ordered by date
$query = mysql_query("SELECT * FROM test_codes ORDER BY 'date' DESC");
$orderedResult = array();

// group the items by date
$queryResult = mysql_fetch_asoc($query);
foreach($queryResult as $row) {
  $orderedResult[$row['date']][] = $row;
}

// render output by date
$xml_output = "<?xml version=\"1.0\"?>\n";
$xml_output .= "<allitems>";

$fp = fopen($filename,"w");

foreach($orderedResult as $key => $dateItems) {
  $xml_output .= '<items date="' . $key . '">';
  foreach($dateItems as $row) {
    $xml_output .= '<item>';
        $xml_output .= '<title>' . $row['title'] . '</title>';
        $xml_output .= '<code>' . $row['code'] . '</code>';
        $xml_output .= '<quantity>' . $row['quantity'] . '</quantity>';
    $xml_output .= '</item>'
  }
  $xml_output .= '</items>';
}

$xml_output .= "</allitems>";

fwrite($fp,$xml_output);
fclose($fp);