[xml] Need help on normalization/canonicalization with namespace prefix rewrite



Hi All,

I will appreciate if somebody could help on how to normalize and canonicalize XML.

For example
<?xml version="1.0" encoding="WINDOWS-1251"?>
<ed:N1 attr="4583001999" xmlns:ed="urn:ru:ed:v2.0">
</ed:N>

I need to get

<n1:N1 xmlns:n1="urn:cbr-ru:ed:v2.0" attr="4583001999"></n1:N1>

And for

<?xml version="1.0" encoding="WINDOWS-1251"?>
<N1 attr="4583001999" xmlns="urn:ru:ed:v2.0">
  <N2 attr="value"></N2>
</N1>

I need

<n1:N1 xmlns:n1="urn:ru:ed:v2.0"> attr="4583001999"<n1:N2 attr="value"></n1:N2></n1:N1>

In other words I need to remove whitespaces and rewrite namespace prefixes
I use
string src;
xmlChar * canon;
xmlDocPtr xDoc = xmlReadMemory(src.data(), src.size(), nullptr, nullptr, XML_PARSE_NOBLANKS);
int bytes = xmlC14NDocDumpMemory(xDoc, nullptr, 0, nullptr, 0, & canon);

It removes whitespaces, need help with namespace prefix rewrite.

Thank you in advance.

On Sun, Jan 28, 2018 at 12:41 AM, Mikhail Goloborodko <mgoloborodko gmail com> wrote:
Hi,

I need help on how to normalize and canonicalize XML.
For example
<?xml version="1.0" encoding="WINDOWS-1251"?>
<ed:N1 attr="4583001999" xmlns:ed="urn:ru:ed:v2.0">
</ed:N>

I need to get

<n1:N1 xmlns:n1="urn:cbr-ru:ed:v2.0" attr="4583001999"></n1:N1>

And for

<?xml version="1.0" encoding="WINDOWS-1251"?>
<N1 attr="4583001999" xmlns="urn:ru:ed:v2.0">
  <N2 attr="value"></N2>
</N1>

I need

<n1:N1 attr="4583001999" xmlns="urn:ru:ed:v2.0"><n1:N2 attr="value"></n1:N2></n1:N1>

In other words I need to remove whitespaces and rewrite namespace prefixes
I use
string src;
xmlChar * canon;
xmlDocPtr xDoc = xmlReadMemory(src.data(), src.size(), nullptr, nullptr, XML_PARSE_NOBLANKS);
int bytes = xmlC14NDocDumpMemory(xDoc, nullptr, 0, nullptr, 0, & canon);

It clearly removes whitespace, need help with namespace prefix rewrite.

Thank you in advance.

Mikhail 




[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]