从包含以下内容的xml标记获取数据:(冒号)

时间:2014-06-01 12:36:53

标签: xml actionscript-3 flash air rss

我正在使用AIR构建一个应用程序,它将搜索并显示deviantART的缩略图请求URL以获取RSS源形式的resuts我得到以下内容 为简单起见,我正在展示我有问题的唯一代码

我们可以将它用于标记

trace(myxml.channel.item[0].title);

但是对于媒体这样的标签怎么做:内容

trace(myxml.channel.item[0].media:content);

但它不起作用 冒号让我感到困惑

3 个答案:

答案 0 :(得分:3)

首先,如果xml中的冒号是已知的命名空间,否则它是简单的标记。 所以从命名空间中传递数据与简单标签略有不同。 我可以向您展示一些示例,但如果您共享xml格式,那么我可以为您编写适当的代码。

这是示例代码:

xmlData.ignoreWhitespace=true;
var awsNS:Namespace = new Namespace("http://www.aws.com/aws");
xmlDataVO.state=xmlData..awsNS::["city-state"];
xmlDataVO.country=xmlData..awsNS::["country"];
xmlDataVO.sunriseHour=xmlData..awsNS::sunrise..awsNS::["hour"].@number;
xmlDataVO.sunriseMinute=xmlData..awsNS::sunrise..awsNS::["minute"].@number;

我的xml格式是这样的

<aws:weather xmlns:aws="http://www.aws.com/aws">
    <aws:city-state citycode="64469">Delhi,  IN</aws:city-state>
    <aws:country>India</aws:country>


    <aws:sunrise>
          <aws:hour number="7" hour-24="07"/>
          <aws:minute number="13"/>
       </aws:sunrise>
 </aws:weather>

答案 1 :(得分:0)

冒号在XML中用于在完全限定的 XML名称中将名称空间前缀与本地名称分开。您可以在文档中搜索有关如何处理XML命名空间的示例。

使用xmlns属性在文档中的某处声明XML命名空间。如果有前缀元素(例如media:content),则应在标记中添加xmlns:prefix='namespace'声明(如xmlns:media="some-namespace-uri"),并在祖先标记中读取(通常,但并非总是如此。

您可以通过从文件中读取命名空间并将其分配给变量来使其工作。然后使用双冒号为选择器添加前缀:

var media:Namespace = myxml.namespace('media');
trace(myxml.channel.item[0].media::content); 

答案 2 :(得分:-1)

尝试使用         XML.elements(名称:对象):XMLList中

包{     import flash.display.Sprite;

public class XmlExample extends Sprite {        
    public function XmlExample() {
        var employees:XML =
            <employees>
                <employee ssn="123-123-1234">
                    <name first="John" last="Doe"/>
                    <address>
                        <street>11 Main St.</street>
                        <city>San Francisco</city>
                        <state>CA</state>
                        <zip>98765</zip>
                    </address>
                </employee>
                <employee ssn="789-789-7890">
                    <name first="Mary" last="Roe"/>
                    <address>
                        <street>99 Broad St.</street>
                        <city>Newton</city>
                        <state>MA</state>
                        <zip>01234</zip>
                    </address>
                </employee>
            </employees>;

        trace(employees.employee[0].address.zip);   // 98765

        trace(employees.employee[1].@ssn);          // 789-789-7890

        trace(employees.employee.name);             // <name first="John" last="Doe"/>
                                                    // <name first="Mary" last="Roe"/>

        trace(employees..zip[0]);                   // 98765

        trace(employees..@ssn[1]);                  // 789-789-7890

        trace(employees..name);                     // <name first="John" last="Doe"/>
                                                    // <name first="Mary" last="Roe"/>

        trace(employees.employee[0].address.*);     // <street>11 Main St.</street>    
                                                    // <city>San Francisco</city>
                                                    // <state>CA</state>
                                                    // <zip>98765</zip>
        var node:String = "zip";
        trace(employees.employee[0].address[node]); // 98765

        var attribute:String = "ssn";
        trace(employees.employee[1].@[attribute]);  // 789-789-7890

        for each (var num:XML in employees..@ssn) {
            trace(num);                             // 123-123-1234
        }                                           // 789-789-7890

        var ssnToFind:String = "789-789-7890";
        trace(employees.employee.(@ssn == ssnToFind).toXMLString());
                                                    // <employee ssn="789-789-7890">
                                                    // <name first="Mary" last="Roe"/>
                                                    // <address>
                                                    // <street>99 Broad St.</street>
                                                    // <city>Newton</city>
                                                    // <state>MA</state>
                                                    // <zip>01234</zip>
                                                    // </address>
                                                    // </employee>
    }
}

}