我希望能够做一些像
这样的事情var XMLquery:String = "a1.a2.a3";
var parserVal:XML = parserMethod(XMLquery);
// or
var parserVal:XMLList = parserMethod(XMLquery);`
并获得类似
的输出<a3>Some value</a3>
重要:我希望能够替换 a1.a2.a3 的输出,因此使用后代是不可能的。 :(
所以它基本上是在字符串中调用xml查询的能力。有没有办法做到这一点。只是提示是超级的,如果我有点开始的话,我可以做到。
谢谢!
我想我在这个链接的帮助下找到了一个解决方案:
Updating an actionscript xml object directly in one line using e4x?
public static function updateXml(xml:XML, path:String, data:XMLList = null,update:Boolean = false,XmlListOnly:Boolean = false):* {
var nodesArray:Array = path.split(".");
var tempXML:XML = xml;
var tempXMLCandidate:XML;
var tagName:String;
for (var i:int = 0; i < nodesArray.length; i++){
tagName = nodesArray[i];
if (i == nodesArray.length - 1){
if (data != null && update && !XmlListOnly){
tempXML[tagName] = data;
}else if (XmlListOnly){
return tempXML[tagName];
}else{
return tempXML[tagName].length();
}
}else{
tempXMLCandidate = tempXML[tagName][0];
if (!tempXMLCandidate){
tempXML.appendChild(tempXMLCandidate);
}
tempXML = tempXMLCandidate;
}
}
return tempXML;
}
您可以这样称呼它:
updateXml(xmlHold, "words.exercise", sortedXmlList, true);
答案 0 :(得分:3)
我懒得编码和测试它,但是这里的想法是:
"a1.a2.a3".split(".")
xml.elements(parts[i])
(你需要额外的(可能是嵌套的)函数进行递归调用)elements
。children()[0]
从