Marcus Boerger wrote:
When doing a recursive get, if the namespace is redefined further down
in the subtree, the redefinition is what ends up in the array rather
than the closest namespace to the element. Just to be clear this also
only adds namespaces that are used, not those defined but not used
(which is probably ok with how they are used in SimpleXML).
Easy interface. If that leads to problems do it manually or use dom.
Wans't that our standard answer? :-)
Works for me and also answers previous question on redefining default
namespace.
When calling getDocNamespaces recursively, if there are any
redefinitions in the tree, what ends up in the array all depends upon
the LAST node that get processed by the sxe_add_registered_namespaces
function.
- probably better to do this one manually and walk the elements in the
tree checking the nsDef and adding them. Will be faster - one tree
traversal rather than multiple times (it ascends the entire tree every
time right now starting from the position of the node passed to
xmlGetNsList - which is a killer when called recursively).
Yes it is slow, i thought of the recursive useage only for debugging
purpose.
Concern here wasnt as much about speed as you had mentioned it was only
for debugging, but that a node buried in a document can alter the
returned namespace array can make debugging a bit harder. I am going to
change it to search manually which not only will increase speed, but the
results will be consistent. Since the prefix is going to remain as the
array key, imo it's probably best if the first encountered namespace in
document order is used and any dupe prefix skipped.
Rob
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php