在flex中处理特定的RDF文件

时间:2009-02-05 16:35:45

标签: xml flex rdf

我还在处理一个特定的RDF文件,但似乎某些东西对我来说并不合适。我的RDF文件的代码如下:

<?xml version = '1.0"?>

<rdf:RDF xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc = "http://purl.org/dc/elements/1.1/"
xmlns:dp = "http://www.telemed.uniud.it/dp/0.1/"
xmlns:dcq = "http://purl.org/dc/qualifiers/1.0/" >


<rdf:Description rdf:about="m021">
    <dc:creator>CAB</dc:creator>
    <dc:title>m021</dc:title>
    <dc:subject></dc:subject>
    <dc:date>null</dc:date>
    <dc:description></dc:description>
    <dc:identifier>1</dc:identifier>
    <dc:relation.requires rdf:resource="./20x/m02120x"/>
    <dc:relation.requires rdf:resource="./10x/m02110x"/>
    <dc:relation.requires rdf:resource="./5x/m0215x"/>
    <dc:relation.requires rdf:resource="./2.5x/m0212.5x"/>
    <dc:relation.requires rdf:resource="preview.jpg"/>
    <dp:resolution rdf:parseType="Resource">
      <dp:unit>micron</dp:unit>
      <dp:x>0.23235294</dp:x>
      <dp:y>0.23046875</dp:y>
    </dp:resolution>
    <dp:objective rdf:parseType="Resource">
      <dp:magnification>20.0</dp:magnification>
      <dp:na>0.6</dp:na>
    </dp:objective>
    <dp:imsize rdf:parseType="Resource">
      <dp:x>316</dp:x>
      <dp:y>236</dp:y>
    </dp:imsize>
</rdf:Description>

<rdf:Description rdf:about="./20x/m02120x">
    <dp:type>plane</dp:type>
    <dp:magnification>20</dp:magnification>
    <dp:matrix rdf:parseType="Resource">
        <dp:xrange>1-103</dp:xrange>
        <dp:yrange>1-86</dp:yrange>
    </dp:matrix>
</rdf:Description>

</rdf:RDF>

我使用URLLoader加载了这个文件,在我的脚本中我试图访问一些属性。例如,我必须访问属性dp:x,嵌套在dp:resolution中,嵌套在rdf:Description中,在我看来,正确的代码是:

//假设'result:XML'是包含我所有RDF和xmlLabel标签的变量

xmlLabel.text ='test:'+ result.Description.resolution.x;

但是这段代码给了我一个空洞的结果。

我尝试了另一种(而不是优雅的方式)来传递以下一行:

xmlLabel.text ='test:'+ result.child(0).child(11).child(1);

这段代码吵闹,给我的值为0.23235294(如预期的那样)

我的问题是:我做错了什么来称呼这些特性?我也尝试了“双点”符号(例如result..Description)没有结果。

问题可能是我正在处理的文件不是有效的XML文件?在这种情况下,有没有办法使我的RDF适应有效的XML以使其工作?

感谢您的回答

大卫

1 个答案:

答案 0 :(得分:1)

嗨大卫(是的,是我,成:) :)。 您有空结果的原因是标记是在命名空间中指定的,您必须在访问标记时指定它。 您可以找到有用的信息in this flex tutorial

基本上你必须声明一个名称空间变量,如:

var rdf:Namespace = new Namespace ("http://www.w3.org/1999/02/22-rdf-syntax-ns#");
var dp:Namespace = new Namespace ("http://www.telemed.uniud.it/dp/0.1/");

然后在访问节点时使用它,例如:

var resolution = result.ref::Description.dp::resolution