04/09/2014
Hello,
I’ve been trying to figure out how to load a nodeset2.xml file into a sample server based on the .Net samples, but without success so far. I’ve seen some questions here and even on StackOverflow addressing this, but could not retrieve an answer from what I have seen.
I used the ModelCompiler for some experiments, but when I did this it is (also) creating .cs files which I can then use. My understanding from what I found on the net is that I should be able to use a single nodeset2.xml file to load it into a server and add the types and potentially also instances into the address space. Is that correct?
If yes I’d expect that I should be able to see how this works somehow from the samples, e.g. the boiler server. In fact, there is a Quickstarts.Boiler.NodeSet2.xml file, but no hit when I search for any code using it in the source code. And in that example the namespace is build using the Opc.Ua.Sample.Boiler.Boiler.PredefinedNodes.uanodes file.
I also found some SaveAsNodeSet2 methods in the samples, but no LoadFromNodeSet2. There is a LoadFromXML (should I use that one?) but it has an empty where used list.
Is there a way to generate the cs files from the nodeset2.xml using the model compiler? I was under the impression that the model compiler generates these files, and trying to do that with the TMC nodeset2 results in an error (model compiler version 1.02.26).
Apart from that I wonder how a client would take advantage of a nodeset2.xml file? Are there any methods/classes supporting this in the .Net stack?
Thank you for any hints/answers.
Thomas
12/01/2017
I’ve faced the same situation. It appears that nodeset files are a standrd method* to import/export data models and address spaces from clients and servers, but i didn’t fond a .NET example where is shown a real usage
i’ve just found the Opc.Ua.Nodeset.Read() method which basically serializes and XML into a “nodeset” object
/// <summary>
/// Loads a nodeset from a stream.
/// </summary>
/// <param name=”istrm”>The input stream.</param>
/// <returns>The set of nodes</returns>
public static NodeSet Read(Stream istrm)
{
XmlReader reader = XmlReader.Create(istrm);
try
{
DataContractSerializer serializer = new DataContractSerializer(typeof(NodeSet));
return serializer.ReadObject(reader) as NodeSet;
}
finally
{
reader.Dispose();
}
}
but how to use nodeset into a NodeManager in order to create and address space?
*See part 6 annex F
1 Guest(s)