【问题标题】:CDATA not supporting to read data from XMLListCDATA 不支持从 XMLList 读取数据
【发布时间】:2011-12-21 09:36:54
【问题描述】:

XML:

  <catering>
        <contents>
        <![CDATA[
            <title>UPCOMING EVENTS</title>
            <info _title = "<font size='14' color='#ffffff'>title1</font" image="null"></info>
            <info _title = "title2" image="images/events/slide1.jpg"></info>
            <info _title = "title3 " image="images/events/slide2.jpg"></info>
            <info _title = "title4" image="images/events/slide3.jpg"></info>
            <info _title = "title5" image="images/events/slide4.jpg"></info>
            ]]
        </contents>
    </catering>

代码

 eventTitle = loadXMLC.events_1_Contents.contents.title;
 xmlList_1 = loadXMLC.events_1_Contents.contents.info;
 for(i = 0;i < xmlList_1.@_title.length(); i++)
 {
    events_0_info.push(xmlList_1.@_title[i]);
    img_ary0.push(xmlList_1.@image[i]);

 }

没有CDATA 我可以读取XML。使用 CDATA 读取数据需要做什么?

我想为每个属性使用 html 标签。

【问题讨论】:

    标签: actionscript-3 flash-cs5


    【解决方案1】:

    这是一个简单的例子:

    var data : XML = <catering>
        <contents>
            <![CDATA[
            <title>UPCOMING EVENTS</title>
            <info _title = "title2" image="images/events/slide1.jpg"></info>
            <info _title = "title3 " image="images/events/slide2.jpg"></info>
            <info _title = "title4" image="images/events/slide3.jpg"></info>
            <info _title = "title5" image="images/events/slide4.jpg"></info>
            ]]>
            </contents>
        </catering>;
    

    CDATA 标记之间的节点被视为文本(文本块)。您必须将此文本转换为有效的 XML 才能访问数据。

    trace(XML(data.contents.children()).nodeKind());//text
    var contents : XMLList = XML("<c>"+data.contents.toString()+"</c>").children();
    trace(contents.toXMLString());
    

    我从您的示例中删除了这一行:

    <info _title = "<font size='14' color='#ffffff'>title1</font" image="null"></info>
    

    Flash 无法将此行转换为 XML...

    【讨论】:

    • 我不能用html标签访问吗?
    • 如果我理解你的问题:我不认为你可以将你的 html 标签放在 XML 中的标签属性中......
    【解决方案2】:

    我认为这是因为您在关闭 CDATA 标记时出现了拼写错误。尝试在末尾添加&gt;,如下所示:

    <catering>
        <contents>
            <![CDATA[
                <title>UPCOMING EVENTS</title>
                <info _title = "<font size='14' color='#ffffff'>title1</font" image="null"></info>
                <info _title = "title2" image="images/events/slide1.jpg"></info>
                <info _title = "title3 " image="images/events/slide2.jpg"></info>
                <info _title = "title4" image="images/events/slide3.jpg"></info>
                <info _title = "title5" image="images/events/slide4.jpg"></info>
            ]]>
        </contents>
    </catering>
    

    你会很高兴的。

    编辑

    正如@OXMO456 提到的。 Flash 解析不会超过第一个 _title 属性。我认为您使用 xml 属性的方式是一种不好的做法。本质上,属性包含有关元素的信息,而不是元素本身的内容。

    也许您应该尝试稍微调整一下 xml 结构并尝试解析它。也许这样的事情可以工作:

    <title>UPCOMING EVENTS</title>
    <info>
        <title size="14" color="#ffffff">title1</title>
    </info>
    <info>
        <title>title2</title>
        <image>images/events/slide2.jpg</image>
    </info>
    <info>
        <title>title3</title>
        <image>images/events/slide3.jpg</image>
    </info>
    <info>
        <title>title4</title>
        <image>images/events/slide4.jpg</image>
    </info>
    

    【讨论】:

    • 我稍微调整了答案。我没有真正测试解析,我的错。
    • 抱歉,我不太确定您对 HTML tags 的意思。您的 元素不包含任何内容。
    猜你喜欢
    • 2018-05-20
    • 2014-03-17
    • 1970-01-01
    • 2012-02-07
    • 2020-03-13
    • 2018-05-09
    • 2013-06-19
    • 2021-01-25
    • 2021-09-19
    相关资源
    最近更新 更多