[]
To perform the same task using the XmlDocument object model, you would use this code:
To write code in C#
void selectXmlNode_Click(object sender, EventArgs e)
{
// find 6th node in document
XmlDocument doc = c1Editor1.Document;
XmlNodeList nodes = SelectNodes(doc, "/html/body/p");
if (nodes.Count > 5)
{
XmlNode node = nodes[5];
C1TextRange range = c1Editor1.CreateRange();
range.MoveTo(node);
range.Select();
}
}
The code is considerably simpler. It retrieves the current document from the C1Editor, and then uses the SelectNodes helper method to get a list of all paragraph tags. It then creates a C1TextRange object, moves this new range to the node that represents the sixth paragraph in the document, and selects the range using the C1TextRange's Select method.
The SelectNodes method is a handy utility that takes care of XML namespaces by automatically creating and using an XmlNamespaceManager (this is standard XmlDocument logic, not directly related to the C1Editor):
To write code in C#
XmlNodeList SelectNodes(XmlDocument doc, string xpath)
{
if (doc.DocumentElement.Attributes["xmlns"] != null)
{
// add namespace manager
string xmlns = doc.DocumentElement.Attributes["xmlns"].Value;
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("x", xmlns);
xpath = xpath.Replace("/", "/x:");
return doc.SelectNodes(xpath, nsmgr);
}
else
{
return doc.SelectNodes(xpath);
}
}