例如
<elem id="dog">
<elem>
...
<elem id="cat" age=8>
...
</elem>
</elem>
有什么方法可以马上定位到cat节点?谢谢
19 个解决方案
#1
你的xml.elem.(@id="cat")
#2
如果还要找cat里面的子结点的话就用:
你的xml.elem.(@id=="cat")[0].子结点名字
(上面的@id=="cat"是两个等号)
你的xml.elem.(@id=="cat")[0].子结点名字
(上面的@id=="cat"是两个等号)
#3
能不能一次性在整个范围内查找
必须遍历吗
必须遍历吗
#4
这不是遍历,定位到id的名字了就是直接查找啊,如果你这里面就一个id==cat的
这个xml.elem.(@id=="cat")[0]就是你要的!
这个xml.elem.(@id=="cat")[0]就是你要的!
#5
这就是查找的整个范围
@id=="cat"就是查找条件
@id=="cat"就是查找条件
#6
事先不知道cat的位置的
#7
上面只是个例子,cat可能被套在n层内我的意思是,但id保证是唯一的
#8
这就是不知道位置取出来的!
#9
xml.elem.(@id=="cat")[0]就是你要的
#10
恩我试试。里面也不全是elem.好了就给分。
#11
不一定是elem 也可以这么写
xml.*.(@id=="cat")[0]
xml.*.(@id=="cat")[0]
#12
用descendants解决了
xml.*.(@id=="cat")[0] 的"*"也表示任意层后裔么
xml.*.(@id=="cat")[0] 的"*"也表示任意层后裔么
#13
我记得不是
#14
不是直接有运算符是支持全局查找的吗? help里就有啊。
用..运算符,作用是在所有子目录中查找结点;
xml..elem.(@id == "cat")[0];
*是通配符,只是当你不确定结点名称的时候才用,例如你只知道有个结点的id属性是cat,但不知道是哪一个,就可以用
var cat:XML = xml..*.(@id == "cat")[0];
然后可以通过cat.name()得到结点名;
不过给你一点建议,当你的xml结构很复杂,例如结构很深的时候,而你又需要频繁使用..运算符,最好是把所有结点先存入一个map中,以后直接通过id获得结点,否则会很慢,flex的XML查找并不是很高效的,他内部也是递归的。
用..运算符,作用是在所有子目录中查找结点;
xml..elem.(@id == "cat")[0];
*是通配符,只是当你不确定结点名称的时候才用,例如你只知道有个结点的id属性是cat,但不知道是哪一个,就可以用
var cat:XML = xml..*.(@id == "cat")[0];
然后可以通过cat.name()得到结点名;
不过给你一点建议,当你的xml结构很复杂,例如结构很深的时候,而你又需要频繁使用..运算符,最好是把所有结点先存入一个map中,以后直接通过id获得结点,否则会很慢,flex的XML查找并不是很高效的,他内部也是递归的。
#15
#16
c蹭分
#17
谢谢各位的解答与建议
#18
XML的?我也在搞..可惜不怎么会,郁闷中
#19
我也是同样问题,不过还是有点问题。。
#20
#1
你的xml.elem.(@id="cat")
#2
如果还要找cat里面的子结点的话就用:
你的xml.elem.(@id=="cat")[0].子结点名字
(上面的@id=="cat"是两个等号)
你的xml.elem.(@id=="cat")[0].子结点名字
(上面的@id=="cat"是两个等号)
#3
能不能一次性在整个范围内查找
必须遍历吗
必须遍历吗
#4
这不是遍历,定位到id的名字了就是直接查找啊,如果你这里面就一个id==cat的
这个xml.elem.(@id=="cat")[0]就是你要的!
这个xml.elem.(@id=="cat")[0]就是你要的!
#5
这就是查找的整个范围
@id=="cat"就是查找条件
@id=="cat"就是查找条件
#6
事先不知道cat的位置的
#7
上面只是个例子,cat可能被套在n层内我的意思是,但id保证是唯一的
#8
这就是不知道位置取出来的!
#9
xml.elem.(@id=="cat")[0]就是你要的
#10
恩我试试。里面也不全是elem.好了就给分。
#11
不一定是elem 也可以这么写
xml.*.(@id=="cat")[0]
xml.*.(@id=="cat")[0]
#12
用descendants解决了
xml.*.(@id=="cat")[0] 的"*"也表示任意层后裔么
xml.*.(@id=="cat")[0] 的"*"也表示任意层后裔么
#13
我记得不是
#14
不是直接有运算符是支持全局查找的吗? help里就有啊。
用..运算符,作用是在所有子目录中查找结点;
xml..elem.(@id == "cat")[0];
*是通配符,只是当你不确定结点名称的时候才用,例如你只知道有个结点的id属性是cat,但不知道是哪一个,就可以用
var cat:XML = xml..*.(@id == "cat")[0];
然后可以通过cat.name()得到结点名;
不过给你一点建议,当你的xml结构很复杂,例如结构很深的时候,而你又需要频繁使用..运算符,最好是把所有结点先存入一个map中,以后直接通过id获得结点,否则会很慢,flex的XML查找并不是很高效的,他内部也是递归的。
用..运算符,作用是在所有子目录中查找结点;
xml..elem.(@id == "cat")[0];
*是通配符,只是当你不确定结点名称的时候才用,例如你只知道有个结点的id属性是cat,但不知道是哪一个,就可以用
var cat:XML = xml..*.(@id == "cat")[0];
然后可以通过cat.name()得到结点名;
不过给你一点建议,当你的xml结构很复杂,例如结构很深的时候,而你又需要频繁使用..运算符,最好是把所有结点先存入一个map中,以后直接通过id获得结点,否则会很慢,flex的XML查找并不是很高效的,他内部也是递归的。
#15
#16
c蹭分
#17
谢谢各位的解答与建议
#18
XML的?我也在搞..可惜不怎么会,郁闷中
#19
我也是同样问题,不过还是有点问题。。