That is valid XML for a node with no content or attributes.
#!/usr/bin/perl
use strict;
use warnings;
use feature 'say';
use Mojo::DOM;
my $xml = '<header>
<id x_id="1">
<a></a>
<b></b>
<c>NA</c>
</id>
</header>';
my $dom = Mojo::DOM->new->xml(1)->parse( $xml );
say 'Current value of c: ' . $dom->at('id > c')->text;
say 'Please specify node c content: ';
chomp( my $node_c = <STDIN> );
$dom->at('id > c')->content( $node_c );
say $dom->content;
say 'add content to nodes a & b';
$dom->at('id > b')->content( 'Foo' );
$dom->at('id > a')->content( 'Bar' );
say $dom->content;
Output:
Current value of c: NA
Please specify node c content:
derp
<header>
<id x_id="1">
<a />
<b />
<c>derp</c>
</id>
</header>
add content to nodes a & b
<header>
<id x_id="1">
<a>Bar</a>
<b>Foo</b>
<c>derp</c>
</id>
</header>