2014-04-04 2 views
1

함수 XML::child()은 Object 매개 변수를 사용하여 가져올 하위 요소의 이름을 지정합니다.
하지만 네임 스페이스를 지정하는 방법은 없습니다.
XML::setNamespace()default xml namespace도 시도했지만 작동하지 않았습니다.
나는 E4X를 사용하여이 문제를 해결했지만, 필자가 선호하는 옵션은 아닙니다.XML :: child()에 대한 네임 스페이스를 지정하는 방법은 무엇입니까?

XML

: AS

<svg xmlns="http://www.w3.org/2000/svg"> 
    <path d= "..." /> 
    <anotherElement /> 
    <path d="..." /> 
</svg> 

:

var svg: XML = new XML(svgData); // read from the XML file above 
var ns: Namespace = new Namespace("http://www.w3.org/2000/svg"); 
svg.setNamespace(ns); // doesn't seem to help 
default xml namespace = ns; // doesn't help either 
var child:* = svg.child("path"); // how to specify namespace? 
var child2:* = svg.ns:path; // works, but I'd rather use the XML class API 
+0

당신이 당신이 네임 스페이스를 사용하고자하는 일에 대해 구체적 수 있습니까? 'svg.ns :: path'가 제대로 작동하기 때문에 '좋아하는 옵션'을 이해할 수 없습니다. –

+0

SVG 파일에 네임 스페이스가 있어야만 네임 스페이스를 사용하고 싶지 않습니다. 이해할 부분이 많지 않습니다. E4X 솔루션을 사용해 보았습니다. 효과가 있음을 알고 있습니다. 다른 방법에 대해 궁금합니다. 네임 스페이스의 유무에 관계없이 모든 XML에서 작동해야하므로 문서가 보이지 않습니다. 이 문제를 해결하십시오. – Petruza

답변

0

당신이 default xml namespace 지시어를 사용할 수있는 등의 작업을 위해 당신은 default 네임 스페이스를 다루고있는이 :

var myNamespace:Namespace = new Namespace("http://www.w3.org/2000/svg"); 
default xml namespace = myNamespace; 

//dealing with XML 

default xml namespace = ""; 
+0

고마워,하지만 질문에 썼다 :'default xml namespace = ns; // 도움이 안된다 .' – Petruza

1

나는 그것을 시도했습니다 use namespace ns;와 함께하지만 그 중 하나도 도움이되지 않았다. 그러나 default xml namespace = ns결국 도움을 수행

 var svg:XML = 
      <svg xmlns="http://www.w3.org/2000/svg"> 
       <path d= "..." /> 
       <anotherElement /> 
       <path d="..." /> 
      </svg>; 

     var ns: Namespace = new Namespace("http://www.w3.org/2000/svg"); 

     default xml namespace = ns; // helps after all 
     var child:XML = svg.child("path")[0]; 

     trace(child.toXMLString()); 
     // -> outputs <path d="..." xmlns="http://www.w3.org/2000/svg"/> 

svg.child("path") 모두 <path ... /> 항목을 포함한 XMLList를 제공합니다; 방금 첫 번째 항목 만 출력하도록 코드를 변경했습니다.

내가 AIR SDK와 플래시 빌더 4.7에서 이것을 시도했습니다 3.8