문제

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>

어떻게 할당 할 수 있습니까? <rdf:item/> VAR에 전화하십시오 rdfitems 그리고 <item/> VAR에 전화하십시오 레지 셈?

감사!

도움이 되었습니까?

해결책

이것이 정확히 질문에 답변하는지 여부는 확실하지 않지만 시나리오가 주어지면 다음 코드는 두 값을 모두 검색합니다 (아래에 참조 된 "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"항목과 "RDF"항목 사이에 구별이 필요하므로 두 번째 네임 스페이스는 각 항목을 독립적으로 검색 할 수 있도록 선언됩니다. 도움이되기를 바랍니다!

다른 팁

여러 이름이 포함 된 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;

네임 스페이스를 모르는 경우 처리해야 할 다양한 방법이 있습니다.

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 Logic 명령문을 좋아합니다.

이것이 네임 스페이스를 동적으로 처리 할 수있는 아이디어를 제공하기를 바랍니다.

문안 인사,

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top