finds.dev← search

// the find

open62541/open62541-nodeset-loader

★ 30 · C · MPL-2.0 · updated Feb 2026

Library for loading opc ua nodesets from xml and sorting the nodes

A C99 library that parses OPC UA NodeSet2 XML files and loads them into an open62541 server, handling the dependency-ordered insertion that the spec requires. It's for anyone embedding OPC UA in industrial or automation systems who doesn't want to write their own XML-to-address-space importer.

The topological sort of nodes by hierarchical references is the core hard problem here and it's handled correctly — loading nodesets with cross-namespace dependencies in the wrong order breaks open62541 silently, and this library fixes that. Test coverage is genuinely good: there are regression tests named after specific issues (issue_201, issue_241, issue_246) plus integration tests that spin up a real server and client. The backend abstraction is clean — a stdout backend exists alongside the open62541 one, which means the core parser is testable without a full OPC UA stack. CI runs valgrind memcheck and AddressSanitizer builds, which matters a lot for a C library handling untrusted XML.

Windows support is explicitly described as 'rudimentary' and that's not a disclaimer to ignore — OPC UA is heavily used on Windows in industrial contexts, so this is a real gap for anyone outside Linux. It's pinned to open62541 1.3.x and open62541 is now on 1.4/master, meaning you're locked to an older stack version. Memory cleanup is manual and partially the caller's responsibility ('NodesetLoader is allocating memory for custom dataTypes, user has to manually clean up') — the README mentions it but doesn't explain what exactly needs freeing or when, which will cause leaks in practice. 30 stars with 25 forks suggests most users are forking rather than contributing back, which usually means people are working around bugs rather than fixing them upstream.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →