现在已经坚持了几天 - 如何循环XML文档中的每个节点并更改节点的文本值。
例如,从这里开始:
<root>
<node1>some text</node1>
<node2>
<node3>some more text</node3>
</node2>
</root>
类似于:
<root>
<node1>updated text</node1>
<node2>
<node3>updated text</node3>
</node2>
</root>
我所使用的代码不起作用:
NSArray *nodes = [xmlDoc nodesForXPath:@"//*"];
for (NSXMLElement *node in nodes) {
//In time a function call will go here to change the text:
NSString *newVal = @"updated text";
[node setStringValue:newVal];
}
虽然当我检查XMLDoc的内容时似乎循环正常,但它有这个:
<root>
updated text
</root>
请帮助,如果你可以尝试重复的谷歌搜索,并将我的(已经变薄的)头发拉出来 - 当然这应该相当简单?!
太
答案 0 :(得分:0)
这是你的xpath表达式。 //*
选择文档中的所有节点,包括根节点。因此,在迭代的某个时刻,您要设置根节点的字符串值,这显然会消除其以前的所有子节点。
我不是xpath的专家,但有点像:
/root//*
可能会做到这一点,除了node3因同样的原因而被淘汰。如果您查看The XPath tutorial,那么应该选择所有文本节点。