Почему не работает канонизатор XML в nojejs xml-c14n
У меня проблема в XML, когда мне нужно, чтобы дочерний элемент содержал атрибуты Parent в Nodejs. Теперь только показ атрибута в дочернем канонизированном является xmlns, но, например, есть атрибуты xmlns:ns1, xmlns:types, атрибуты не в дочернем элементе после функции canonicalize.
Я не могу найти функцию /lib в узле, сделайте это для меня.
В PHP я могу сделать это с помощью функции C14N.
В PHP у меня есть:
Вход:
$xml = '<?xml version="1.0" encoding="UTF-8"?>
<ns1:SendTest xmlns:ns1="http://localhost:8080/TestA/a" xmlns:type="http://localhost:8080/TestA/b" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://localhost:8080/TestA/a http://localhost:8080/TestA/xsd/SendTest.xsd">
<HEAD>
<TESTA>6291</TESTA>
</HEAD>
<TESTB Id="testeb:1ABCDZ">
<TESTC>
<TESTD>e4c47c91392cd57088c28468be0ef2349782f2df</TESTD>
</TESTC>
</TESTB>
</ns1:SendTest>';
PHP-код:
$d = new DOMDocument('1.0');
$d->loadXML($xml);
$data = $d->getElementsByTagName('TESTB')->item(0)->C14N(FALSE,FALSE,NULL,NULL);
echo ($data);
die();
ВЫХОД:
<?xml version="1.0" encoding="UTF-8"?>
<TESTB xmlns:ns1="http://localhost:8080/TestA/a" xmlns:type="http://localhost:8080/TestA/b" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Id="testeb:1ABCDZ">
<TESTC>
<TESTD>e4c47c91392cd57088c28468be0ef2349782f2df</TESTD>
</TESTC>
</TESTB>
не работает в NodeJs (xml-c14n):
const c14n = require("xml-c14n")();
const DOMParser = require("xmldom").DOMParser;
async function test (){
let xml = xml(input PHP);
let doc = (new DOMParser()).parseFromString(xml);
let canonicalizer = c14n.createCanonicaliser("http://www.w3.org/2001/10/xml-exc-c14n#");
let lote = doc.getElementsByTagName('TESTB');
let canonicalized = await canonicalizer.canonicalise(lote[0]);
console.log(canonicalized.toString());
}
test();
вывод:
<TESTB Id="testeb:1ABCDZ">
<TESTC>
<TESTD>e4c47c91392cd57088c28468be0ef2349782f2df</TESTD>
</TESTC>
</TESTB>
Результат, который я получаю, не верен, предложение для моего вопроса?