0

我仍在处理特定的 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 = '测试:' + result.Description.resolution.x;

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

我尝试了一种不同的(而不是优雅的方式)来通过以下行来做到这一点:

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

和这段代码工作,给我的价值 0.23235294 (如预期)

我的问题是:我在调用属性时做错了什么?我还尝试了没有结果的“双点”符号(例如结果..描述)。

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

谢谢您的回答

大卫

4

1 回答 1

1

嗨,大卫(是的,是我,程 :))。结果为空的原因是该标签是在命名空间中指定的,并且您必须在访问该标签时指定它。您可以在这个 flex 教程中找到有用的信息。

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

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
于 2009-02-05T16:50:27.853 回答