4

E4Xで名前空間を使用してXMLを処理する方法を学びたいので、基本的には次のように学びたいと思います。たとえば、次のようなXMLがあるとします。

<rdf:RDF 
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns="http://purl.org/rss/1.0/">
    <rdf:item value="5"/>
    <item value="10"/>
</rdf:RDF>

rdfItemsという変数とregItemsという変数<rdf:item/>割り当てるにはどうすればよいですか?<item/>

ありがとう!

4

3 に答える 3

7

複数の名前を含むXMLがあるが、XMLから値を取得するときに名前空間を気にしない場合は、次のようにすることができます。

XMLの例

<ns1:Item>
  <ns1:ItemType>Printed Material</ns1:ItemType>
  <ns2:Book isbn="123456">
    <ns2:Author>
      <ns2:FirstName>James</ns2:FirstName>
      <ns2:LastName>Smith</ns2:LastName>
    </ns2:Author>
    <ns2:Title>The Book Title</ns2:Title>
  </ns2:Book>
<ns1:Item> 

このような名前空間に関係なく、任意のアイテムを取得できます

var itemType:String = xml.*::ItemType;
var bookISBN:Number = xml.*::Book.@isbn;
var bookTitle:String = xml.*::Book.Title;
于 2009-05-29T16:28:08.373 に答える
4

これが質問に正確に答えるかどうかはわかりませんが、シナリオを考えると、次のコードは両方の値を取得します(以下で参照する「xml」変数は、指定したXMLコードのスニペットを含むXMLオブジェクトです)。

// Your "rdf" namespace
namespace rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#";
use namespace rdf;

// Your "reg" (i.e, default) namespace
namespace reg = "http://purl.org/rss/1.0/";
use namespace reg;

private function getYourValues():void
{               
    var rdfitems:String = xml.rdf::item.@value;
    var regitems:String = xml.reg::item.@value;
}

「rdf」アイテムと「non-rdf」アイテムは要素名が同じであるため、区別する必要があります。そのため、2番目の名前空間は、各アイテムを個別に取得できるように宣言されています。それが役に立てば幸い!

于 2009-05-28T20:41:57.317 に答える
2

対処しなければならない名前空間がわからない場合は、さまざまな方法を使用できます。

node.namespace().prefix     //returns prefix i.e. rdf
node.namespace().uri        //returns uri of prefix i.e. http://www.w3.org/1999/02/22-rdf-syntax-ns#

node.inScopeNamespaces()   //returns all inscope namespace as an associative array like above

//returns all nodes in an xml doc that use the namespace
var nsElement:Namespace = new Namespace(node.namespace().prefix, 
node.namespace().uri);

var usageCount:XMLList = node..nsElement::*;

あなたの最善の策は、それをいじってみることです。しかし、xml をフィルター処理する prediate ロジック ステートメントを使用すると、作業がはるかに簡単になります。

これにより、名前空間を動的に処理するためのアイデアが得られることを願っています

よろしく、

ジョン

于 2009-06-22T14:55:02.677 に答える