Need help extracting info from XML file using XML package
Duncan Temple Lang wrote:
not really: the xpath pattern '//coordinates' does say 'find all
coordinates nodes searching from the root', but the root here is not the
original root of the whole document, but each polygon node in turn.
try:
root = xmlInternalTreeParse('
<root>
<foo>
<bar>1</bar>
</foo>
<foo>
<bar>2</bar>
</foo>
</root>')
xpathApply(root, '//foo', xpathSApply, '//bar', xmlValue)
# equals list("1", "2"), not list(c("1", "2"), c("1", "2"))
Just for the record and to avoid confusion for anyone reading the archives in the future, the behaviour displayed above is from an old version of the XML package (mid 2008). Subsequent versions yield the second result as the //bar works from the root of the document. But using .//bar would search from the foo down the sub-tree. The reason for this is that, having used XPath to get a node, e.g. foo, we often want to go back up the XML tree from that current node, e.g. ../ ./ancestor::foo and so on.
just for the record: this is an excellent example of where the behaviour (implementation + interface) of a package changes to make it better, despite the trillions of lines of old code that get broken by the change. thanks, duncan. vQ