1 using System;
 2 
 3 int main()
 4 {
 5     System.Lex.FileMap fileMap;
 6     string query = "/philosophers/philosopher";
 7     string xml;
 8     xml.Append("<philosophers>\n").
 9         Append("    <philosopher name=\'Plato\'/>\n").
10         Append("    <philosopher name=\'Aristotle\'/>\n").
11         Append("    <philosopher name=\'Socrates\'/>\n").
12         Append("</philosophers>\n");
13     Result<UniquePtr<System.Xml.Document>> parseResult = System.Xml.ParseXmlDocumentContent(xml"xml"fileMap);
14     if (parseResult.Error())
15     {
16         Console.Error() << parseResult.GetErrorMessage() << endl();
17         return 1;
18     }
19     System.Xml.Document* doc = parseResult.Value().Get();
20     Result<System.UniquePtr<System.XPath.NodeSet>> nodeSetResult = System.XPath.EvaluateToNodeSet(querydoc);
21     if (nodeSetResult.Error())
22     {
23         Console.Error() << nodeSetResult.GetErrorMessage() << endl();
24         return 1;
25     }
26     System.XPath.NodeSet* nodeSet = nodeSetResult.Value().Get();
27     int n = nodeSet->Count();
28     for (int i = 0; i < n; ++i;)
29     {
30         System.Xml.Node* node = nodeSet->GetNode(i);
31         if (node->IsElementNode())
32         {
33             System.Xml.Element* element = cast<System.Xml.Element*>(node);
34             Console.Out() << element->GetAttribute("name") << endl();
35         }
36     }
37     return 0;
38 }