1

我正在尝试使用看起来像这样的节点解析文档:

<doc>
<results>
        <result xmlns="http://www.inktomi.com/">
            <title>Senate Panel to Review Election Unit Sale</title>
        </result>
</result>
</doc>

但是,结果的名称空间和节点名可能不同。如果不是这样,这将起作用:

results..*::title //>Senate Panel to ...

但这样做不会:

var myvar = "title"
results..*::[myvar] 

任何线索?

4

3 回答 3

1

所以正确的解决方案显然是:

var myvar = "title"
var ans = results..*.(localName()==myvar);

感谢 Twitter 上的 @xtyler 找到答案

于 2009-10-12T14:59:31.537 回答
0

不是 E4X 解决方案,但您可以遍历 xml.namespaceDeclarations() 返回的所有可用命名空间,然后获取第一个孩子或使用方括号来访问它。

您也可以只预解析 xml 并使所有命名空间与快速修复相同。

于 2009-10-12T01:48:20.160 回答
0

显然,访问子项和使用 * 选择任何命名空间的方括号方式不能一起使用

var doc:XML = 
<doc> 
    <results> 
        <result xmlns="http://www.inktomi.com/">  
            <title>Senate Panel to Review Election Unit Sale</title> 
        </result>
    </results>
</doc>;
var ns:Namespace = new Namespace("http://www.inktomi.com/");
trace(doc..*::title.toXMLString()); //These three 
trace(doc.results.*::result);       //lines compile
trace(doc.results.ns::["result"]);  //and run as expected
//This commented out line compiles but throws 2 verify errors in the run time
//trace(doc.results.*::["result"]); 

VerifyError:错误 #1080:命名空间的值非法。
ReferenceError:错误 #1065:未定义变量测试。

VerifyError类表示遇到格式错误或损坏的 SWF 文件时发生的错误

于 2009-10-10T09:47:57.203 回答