Mirth Community

Mirth Community (http://www.mirthcorp.com/community/forums/index.php)
-   Support (http://www.mirthcorp.com/community/forums/forumdisplay.php?f=6)
-   -   Specifying xsi:nil="true" on XML element (http://www.mirthcorp.com/community/forums/showthread.php?t=16266)

obsessio 09-17-2015 06:08 PM

Specifying xsi:nil="true" on XML element
 
1 Attachment(s)
I have XML to XML channel and I need to sent null values as null
(Stripe NameSpace option is unselected)
So I have inbound template which is below;
Code:

<mesaj xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <mesajBilgisi>
        <mesajTipi xsi:nil="true"/>
        <olayTipi xsi:nil="true"/>
        <mesajTarihi xsi:nil="true"/>
        <gonderenUygulama xsi:nil="true"/>
        <alanUygulama xsi:nil="true"/>
        <tesisAdi xsi:nil="true"/>
        <kontrolID xsi:nil="true"/>
    </mesajBilgisi>
    <masterBilgi>
        <aktif xsi:nil="true"/>
        <ilacMalzeme xsi:nil="true"/>
    </masterBilgi>
</mesaj>


and when I sent a message to channel, in transformation step "xsi:nil="true" properties removed from the message.

Code:

<mesaj xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <mesajBilgisi>
        <mesajTipi/>
        <olayTipi/>
        <mesajTarihi>20150918044728</mesajTarihi>
        <gonderenUygulama>Mirth</gonderenUygulama>
        <alanUygulama>IYS</alanUygulama>
        <tesisAdi>Tesis1</tesisAdi>
        <kontrolID>CID20150918044728458</kontrolID>
    </mesajBilgisi>
    <masterBilgi>
        <aktif/>
        <ilacMalzeme/>
    </masterBilgi>
</mesaj>

I think I missed something..

Channel attached
Mirth 3.3
Java 8.60

obsessio 09-19-2015 04:08 AM

I stucked here and I need your suggestions please.

narupley 09-24-2015 02:10 PM

I think the issue is that you're overwriting those nodes, so any attributes are reset. You can add that namespaced attribute back though, like this:

Code:

var xsi = new Namespace('xsi', 'http://www.w3.org/2001/XMLSchema-instance');
tmp['mesajBilgisi']['mesajTipi'].@xsi::nil = 'true';


obsessio 09-24-2015 03:18 PM

Thank you very much Nick for your reply.

I added code but now it adds to every element even if element has value. Like;

Code:

<mesaj xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:SchemaLocation="file:///C:/sema.xsd" xsi:nil="true">
    <mesajBilgisi>
        <mesajTipi xsi:nil="true"/>
        <olayTipi xsi:nil="true"/>
        <mesajTarihi xsi:nil="true">20150925011504</mesajTarihi>
        <gonderenUygulama xsi:nil="true">Mirth</gonderenUygulama>
        <alanUygulama xsi:nil="true">IYS</alanUygulama>
        <tesisAdi xsi:nil="true">Tesis1</tesisAdi>
        <kontrolID xsi:nil="true">CID20150925011504801</kontrolID>
    </mesajBilgisi>
    <masterBilgi>
        <aktif xsi:nil="true"/>
        <ilacMalzeme xsi:nil="true"/>
    </masterBilgi>
</mesaj>

So I added if statement to check the element value is null or not and the result is perfect ;)

Code:

var xsi = new Namespace('xsi', 'http://www.w3.org/2001/XMLSchema-instance');

var a = tmp['mesajBilgisi']['mesajTarihi']
if (a === null) {
        a = tmp['mesajBilgisi']['mesajTarihi'].@xsi::nil = 'true';
}

For now my question is; I should create if statement for every element, like;

Code:

var xsi = new Namespace('xsi', 'http://www.w3.org/2001/XMLSchema-instance');

var a = tmp['mesajBilgisi']['olayTipi']
if (a === null) {
        a = tmp['mesajBilgisi']['olayTipi'].@xsi::nil = 'true';
}

var b = tmp['mesajBilgisi']['kontrolID']
if (b === null) {
        tmp['mesajBilgisi']['kontrolID'].@xsi::nil = 'true';
}

var c = tmp['mesajBilgisi']['gonderenUygulama']
if (c === null) {
        tmp['mesajBilgisi']['gonderenUygulama'].@xsi::nil = 'true';
}

var d = tmp['mesajBilgisi']['mesajTarihi']
if (d === null) {
        tmp['mesajBilgisi']['mesajTarihi'].@xsi::nil = 'true';
}

.............................
...............

My JavaScript knowledge is limited. Is there any shortcode to check every element :confused:

obsessio 10-01-2015 10:07 AM

Any idea for this if condition, how can I check all elements?

Code:

var xsi = new Namespace('xsi', 'http://www.w3.org/2001/XMLSchema-instance');

var a = tmp['mesajBilgisi']['olayTipi']
if (a === null) {
        a = tmp['mesajBilgisi']['olayTipi'].@xsi::nil = 'true';
}

var b = tmp['mesajBilgisi']['kontrolID']
if (b === null) {
        b = tmp['mesajBilgisi']['kontrolID'].@xsi::nil = 'true';
}

var c = tmp['mesajBilgisi']['gonderenUygulama']
if (c === null) {
        c = tmp['mesajBilgisi']['gonderenUygulama'].@xsi::nil = 'true';
}

var d = tmp['mesajBilgisi']['mesajTarihi']
if (d === null) {
        d = tmp['mesajBilgisi']['mesajTarihi'].@xsi::nil = 'true';
}

.............................
...............



All times are GMT -8. The time now is 02:54 PM.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2020, vBulletin Solutions, Inc.
Mirth Corporation