SkyHook wrote:
1. Under the topic "Select Nodes Using XPath Navigation" it says:
"All XmlNodeList objects are synchronized with the underlying document,
therefore if you ... modify the value of a node, that node is updated in the
document it came from."
2. Under the topic "XmlNode.Select Nodes Method (String)" it says:
"The XmlNodeList should not be expected to be connected "live" to the XML
document. That is, changes that appear in the XML diocument may not appear
in the XmlNodeList, and vice versa."
You are right, the documentation is misleading. With .NET some
XmlNodeLists returned are "live", e.g. ChildNodes is live, try
XmlDocument xmlDocument = new XmlDocument();
XmlNodeList documentChildre n = xmlDocument.Chi ldNodes;
Console.WriteLi ne("Number of child nodes: {0}",
documentChildre n.Count);
xmlDocument.Loa dXml("<!-- a comment child node --><gods />");
Console.WriteLi ne("Number of child nodes: {0}",
documentChildre n.Count);
and it will output
Number of child nodes: 0
Number of child nodes: 2
GetElementsByTa gName also returns a live XmlNodeList, e.g. try
XmlDocument xmlDocument = new XmlDocument();
XmlNodeList godElements = xmlDocument.Get ElementsByTagNa me("god");
Console.WriteLi ne("Number of god elements: {0}", godElements.Cou nt);
xmlDocument.Loa dXml("<gods><go d>Kibo</god><god>Xibo</god></gods>");
Console.WriteLi ne("Number of god elements: {0}", godElements.Cou nt);
and it will output
Number of god elements: 0
Number of god elements: 2
However the implementation of the live XmlNodeList for
GetElementsByTa gName is badly done and can give you serious performance
problems, see
<http://support.microso ft.com/kb/823928/en-us>
The XmlNodeList returned by SelectNodes is not live e.g. if you check
XmlDocument xmlDocument = new XmlDocument();
XmlNodeList godElements = xmlDocument.Sel ectNodes("gods/god");
Console.WriteLi ne("Number of god elements: {0}", godElements.Cou nt);
xmlDocument.Loa dXml("<gods><go d>Kibo</god><god>Xibo</god></gods>");
Console.WriteLi ne("Number of god elements: {0}", godElements.Cou nt);
then the output is
Number of god elements: 0
Number of god elements: 0
--
Martin Honnen --- MVP XML
http://JavaScript.FAQTs.com/