Вот мой код для генерации данного XML.
my $doc = XML::LibXML::Document->new( '1.0', 'utf-8' );
my $nodeBroadsoft = $doc->createElementNS ('C', 'BroadsoftDocument');
$nodeBroadsoft->setNamespace ('http://www.w3.org/2001/XMLSchema-instance', 'xsi', 0);
$nodeBroadsoft->setAttributeNS('', 'protocol', 'OCI' );
$doc->addChild ($nodeBroadsoft);
my $nodeSession = $doc->createElementNS ('', "sessionId");
$nodeSession->setNamespace ("", undef, 0);
$nodeSession->appendTextNode ($sessionID);
$nodeBroadsoft->addChild ($nodeSession);
my $nodeCommand = $doc->createElementNS ('', "command");
$nodeCommand->setNamespace ("", undef, 0);
$nodeBroadsoft->addChild ($nodeCommand);
$nodeCommand->setAttributeNS ('http://www.w3.org/2001/XMLSchema-instance', 'type', 'AuthenticationRequest');
my $nodeUserId = $doc->createElementNS ('', 'userId');
$nodeUserId->appendTextNode ('automation');
$nodeCommand->addChild ($nodeUserId);
Когда я запускаю эту программу, она генерирует следующий XML
<?xml version="1.0" encoding="utf-8"?>
<BroadsoftDocument xmlns="C" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" protocol="OCI">
<sessionId>1231313313133131</sessionId>
<command xsi:type="AuthenticationRequest">
<userId>automation</userId>
</command>
</BroadsoftDocument>
и мне нужно следующее:
<BroadsoftDocument protocol="OCI" xmlns="C" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<sessionId xmlns="">31436753,1298637565495</sessionId>
<command xsi:type="AuthenticationRequest" xmlns="">
<userId>automation</userId>
</command>
</BroadsoftDocument>
Единственная разница заключается в элементах sessionId и command. В сгенерированном XML отсутствует "xmlns =" "" для этих двух тегов.
Я пытаюсь использовать следующую функцию, но она не работает.
$nodeSession->setNamespace ("", undef, 0);
$nodeCommand->setNamespace ("", undef, 0);
Как я понимаю (как новичок в XML), мне нужно пространство имен по умолчанию, имеющее нулевое значение для sessionId и элементов команды. Пожалуйста, помогите