XML to JSON node not recognizing input properties?

I’m really enjoying working with n8n, but may have found an issue in the XML to JSON node. I’m sure I’m doing something dumb, since most of my other workflows were easy, one and done’s.

Basically, I’m receiving webhook events just fine, but the downline XML node can’t seem to access the XML input property. Most interestingly there are two different JS error codes for the same error. I’ve attached the workflow and error(s) screenshot in the XML node to the bottom.

Note that the XML message seems correctly JSON unescaped:

body.message: <?xml version="1.0" encoding="UTF-8"?><Event seqnum="452" sid="uuid:1" timestamp="2026-01-03T10:10:29.262853-06:00"><control>GV2</control><action uom="56" prec="4">3989</action><node>n001_huegrp9</node><eventInfo></eventInfo><fmtAct>0.3989</fmtAct><fmtName>Y</fmtName></Event>

But the output red error text suggests (to me) that XML is trying to use the .message payload as a property not data.

Item has no JSON property called “<?xml version="1.0" encoding="UTF-8"?>GV23989n001_huegrp90.3989Y”

Adding mystery, the popup message shows something different, also not a property.

Problem in node ‘XML’ Item has no JSON property called "GV23989n001_huegrp90.3989Y

I can’t tell if there are multiple JS issues firing, or something else. “no JSON property called "GV23989n001_huegrp90.3989Y” has internal XML parser error smells, but I’ve validated the source XML in other tools with no issues.

Thank you in advance for your expert advice.

Environment:

  • Node type: n8n-nodes-base.xml
  • Node version: 1 (Latest)
  • n8n: version: 2.1.5 (Self Hosted), default DB, docker, Linux arm64

Workflow

Node screenshot

Correction (can’t edit original post)

The red error text in the XML node is:

Item has no JSON property called “<?xml version="1.0" encoding="UTF-8"?>_258.2”

Super interesting: the parsing issue is happening here in the forum editor as well. :thinking:

in a quote, it breaks and truncates with with looks like an object id fragment suffixed.

Item has no JSON property called “<?xml version="1.0" encoding="UTF-8"?>_258.2”

But, in a code block it does not:

Item has no JSON property called "<?xml version="1.0" encoding="UTF-8"?><Event seqnum="2" sid="uuid:1" timestamp="2025-12-21T20:14:02.093410-06:00"><control>_25</control><action>8.2</action><node></node><eventInfo><interview uid="32" channel="0" cc="0" /></eventInfo></Event>"

Hi @ferventgeek, The field (Property Name) states you need to give the name of the variable which holds the xml, so in this case instead of using an expression, you should just have the value: “message”. Add a set node before the xml and map out the body.message to a variable called “message”

Take note, some properties in nodes need the NAME and not the value, like when using an expression.

2 Likes

That got it, thanks!

Ahhh.. ok, I think what’s happening is the editor can navigate input json with no issue because it’s only looking at the current input. But the “real” output (worflow execution) can’t .dot navigate down into the payload message. Set, adds a named “pointer” into the actual path, making it persistent and accessable across the execution path.

What I’ll have to test if non-flat object navigation limits apply to all nodes, or just the XML node.

Thanks for your help!

That is correct, we essentially make a copy of the value of body.message into message. This way it is easier to reference the name of the variable directly. But the key here was that you only had to give the name and not the value

1 Like

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.