title: Populating opcua address space with Nodes from an xml schema
body: <p>Am working on a project to build an opc ua server from specification, </p>
  
  <p>I've gone far enough on the implementation, am currently working on the write request, I already have a few nodes in the server address space.</p>
  
  <p>There seem to be so many nodes, so many actually. It's almost impossible to create 
   and add the Nodes one by one.</p>
  
  <p>Anyways back to the question, I've downloaded an xml file from opc foundation containing schema for all the nodes in the address space, <a href="https://github.com/OPCFoundation/UA-Nodeset/blob/master/Schema/Opc.Ua.NodeSet.xml" rel="nofollow noreferrer">Here is a link to the xml file</a></p>
  
  <p>What is the most efficient way to create nodes from the xml file ? I am writing on a c95 compiler.</p>
  
  <p>Below is a quick view of how Nodes are represented in the nodeset Xml file,</p>
  
  <pre><code>&lt;Nodes&gt;
  &lt;Node i:type="DataTypeNode"&gt;
    &lt;NodeId&gt;
      &lt;Identifier&gt;i=1&lt;/Identifier&gt;
    &lt;/NodeId&gt;
    &lt;NodeClass&gt;DataType_64&lt;/NodeClass&gt;
    &lt;BrowseName&gt;
      &lt;NamespaceIndex&gt;0&lt;/NamespaceIndex&gt;
      &lt;Name&gt;Boolean&lt;/Name&gt;
    &lt;/BrowseName&gt;
    &lt;DisplayName&gt;
      &lt;Locale&gt;&lt;/Locale&gt;
      &lt;Text&gt;Boolean&lt;/Text&gt;
    &lt;/DisplayName&gt;
    &lt;Description&gt;
      &lt;Locale&gt;&lt;/Locale&gt;
      &lt;Text&gt;Describes a value that is either TRUE or FALSE.&lt;/Text&gt;
    &lt;/Description&gt;
    &lt;WriteMask&gt;0&lt;/WriteMask&gt;
    &lt;UserWriteMask&gt;0&lt;/UserWriteMask&gt;
    &lt;RolePermissions /&gt;
    &lt;UserRolePermissions /&gt;
    &lt;AccessRestrictions&gt;0&lt;/AccessRestrictions&gt;
    &lt;References&gt;
      &lt;ReferenceNode&gt;
        &lt;ReferenceTypeId&gt;
          &lt;Identifier&gt;i=45&lt;/Identifier&gt;
        &lt;/ReferenceTypeId&gt;
        &lt;IsInverse&gt;true&lt;/IsInverse&gt;
        &lt;TargetId&gt;
          &lt;Identifier&gt;i=24&lt;/Identifier&gt;
        &lt;/TargetId&gt;
      &lt;/ReferenceNode&gt;
    &lt;/References&gt;
    &lt;IsAbstract&gt;false&lt;/IsAbstract&gt;
    &lt;DataTypeDefinition i:nil="true" /&gt;
  &lt;/Node&gt;
  </code></pre>