如何在Mac上使用NSXML循环节点并更改每个节点的文本值
问题描述:
现在已停留多日 - 我如何循环XML文档中的每个节点并更改节点的文本值。如何在Mac上使用NSXML循环节点并更改每个节点的文本值
例如从这个去:
<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>
请帮助,如果你可以我已经尝试过重复谷歌搜索,并拉我(已经稀疏)的头发 - 当然这应该是相当简单的?!
Matt。
答
这是您的xpath表达式。 //*
选择包含根节点的文档中的所有节点。所以在迭代过程中的某个时刻,你需要设置根节点的字符串值,该节点显然会清除其之前的所有子节点。
我不是XPath的专家,但这样的:
/root//*
可能会做,只是节点3的伎俩将得到一扫而光出于同样的原因。如果你通过The XPath tutorial查看,应该有一种方法可以选择所有文本节点。
谢谢杰里米 - 我会给它一个去和结果的结果。 – ar77 2010-05-26 10:33:44