[]
        
(Showing Draft Content)

Selecting a Paragraph using the XmlDocument

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);
    }
}