【问题标题】:Trouble with Flex Desktop accessing XML file with namespace elementsFlex Desktop 使用命名空间元素访问 XML 文件时出现问题
【发布时间】:2014-04-13 12:34:39
【问题描述】:

我有一个 XML 文件(实际上是一个 epub contentes.opf 文件),部分显示如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <package xmlns="http://www.idpf.org/2007/opf" unique-identifier="bookid" version="2.0">  
 <metadata xmlns:dc="http://purl.org/dc/elements/1.1/">
   <meta name="generator" content="Adobe InDesign 9.0" />
   <meta name="cover" content="x22305.png" />
   <dc:title>My Title</dc:title>
   <dc:creator>The Author</dc:creator>
etc

我将文件读为:

str = XML(fileStream.readUTFBytes(fileStream.bytesAvailable));
var xmlList:XMLList = XMLList (str);

我的 xmlList 跟踪

trace(xmlList);

现在显示(似乎已经添加了一个默认的命名空间 - 不太在意):

<aaa:package unique-identifier="bookid" version="2.0" xmlns:aaa="http://www.idpf.org/2007/opf">
  <aaa:metadata xmlns:dc="http://purl.org/dc/elements/1.1/">
    <aaa:meta name="generator" content="Adobe InDesign 9.0"/>
    <aaa:meta name="cover" content="x22305.png"/>
    <dc:title>My Title</dc:title>
    <dc:creator>The Author</dc:creator>

如何访问 xmlList 中的元素(比如标题)?

尝试了很多变化,所以这让我有点发疯,我们将不胜感激。

感谢您的帮助!

【问题讨论】:

    标签: xml actionscript-3 apache-flex flex4 e4x


    【解决方案1】:

    感谢弹性小组中一位小伙子的帮助,解决方案是(对于那些有类似问题的人):

        private function contentsOpf():void
        {
    
            var contentsOpfFile:File   = new File(destDir.nativePath + File.separator +  "OEBPS" + File.separator + "content.opf");
            var fileStream:FileStream = new FileStream();
            fileStream.open(contentsOpfFile, FileMode.READ);
    
            var ns: Namespace = new Namespace("","http://www.idpf.org/2007/opf")
            var nsdc: Namespace = new Namespace("dc", "http://purl.org/dc/elements/1.1/")   ;
    
            var packageXml: XML = XML(fileStream.readUTFBytes(fileStream.bytesAvailable));
    
            packageXml.addNamespace(ns);
            var metadataXml: XMLList = packageXml.ns::metadata;
            metadataXml.addNamespace(nsdc);
    
            var titleXml: XMLList = metadataXml.nsdc::title;
    
            trace(packageXml.toString());
            trace(titleXml.toString());
        }
    

    菲尔

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-07
      • 2023-03-13
      • 2012-10-03
      • 2018-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多