Skip to content

MirthSync is unable to pull code if the Mirth code has a "invalid XML character" in them #76

@VibinchanderVenkatasubramanian

Description

When pulling code from mirth using mirthsync command, if there is a presence of any invalid / illegal XML character is present then, mirth sync fails to pull the code further and stops at that particular spot.

In real time on many cases, it's possible to have some invalid XML code used inside mirth script to escape a few data incoming from multiple source application.

In my case, I'm using the character "&#17" to escape that character coming in the incoming message. When I run the below .bat script (basically mirth sync command - represented as .bat script here).

@echo off
REM Change to script directory
cd /d "%~dp0"

REM Run mirthsync
"C:\mirth-sync-install-location\mirthsync.bat" ^
 -s "https://some-url-where-mirth-is-hosted:mirth-https-port/api" ^
 -i ^
 --disk-mode code ^
 --skip-disabled ^
 --include-configuration-map ^
 -u my-mirth-admin-username ^
 -p my-mirth-admin-password ^
 -t ".\Mirth-Test" ^
 pull -f

The error received while pulling the mirth code using mirth sync command is as below.

javax.xml.stream.XMLStreamException: ParseError at [row,col]:[269273,37]
Message: Character reference "&#x17" is an invalid XML character.
        at java.xml/com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(XMLStreamReaderImpl.java:652)
        at clojure.data.xml$pull_seq$fn__543.invoke(xml.clj:287)
        at clojure.lang.LazySeq.sval(LazySeq.java:42)
        at clojure.lang.LazySeq.seq(LazySeq.java:51)
        at clojure.lang.RT.seq(RT.java:535)
        at clojure.core$seq__5402.invokeStatic(core.clj:137)
        at clojure.core$seq__5402.invoke(core.clj:137)
        at clojure.data.xml$seq_tree$fn__437.invoke(xml.clj:178)
        at clojure.lang.LazySeq.sval(LazySeq.java:42)
        at clojure.lang.LazySeq.seq(LazySeq.java:51)
        at clojure.lang.LazySeq.more(LazySeq.java:87)
        at clojure.lang.RT.more(RT.java:722)
        at clojure.core$rest__5388.invokeStatic(core.clj:73)
        at clojure.core$rest__5388.invoke(core.clj:73)
        at clojure.data.xml$seq_tree$fn__437$fn__443.invoke(xml.clj:184)
        at clojure.lang.LazySeq.sval(LazySeq.java:42)
        at clojure.lang.LazySeq.seq(LazySeq.java:51)
        at clojure.lang.RT.seq(RT.java:535)
        at clojure.core$seq__5402.invokeStatic(core.clj:137)
        at clojure.core$seq__5402.invoke(core.clj:137)
        at clojure.data.xml$seq_tree$fn__437.invoke(xml.clj:178)
        at clojure.lang.LazySeq.sval(LazySeq.java:42)
        at clojure.lang.LazySeq.seq(LazySeq.java:51)
        at clojure.lang.LazySeq.more(LazySeq.java:87)
        at clojure.lang.RT.more(RT.java:722)
        at clojure.core$rest__5388.invokeStatic(core.clj:73)
        at clojure.core$rest__5388.invoke(core.clj:73)
        at clojure.data.xml$seq_tree$fn__437$fn__447.invoke(xml.clj:186)
        at clojure.lang.LazySeq.sval(LazySeq.java:42)
        at clojure.lang.LazySeq.seq(LazySeq.java:58)
        at clojure.lang.RT.seq(RT.java:535)
        at clojure.core$seq__5402.invokeStatic(core.clj:137)
        at clojure.core$seq__5402.invoke(core.clj:137)
        at clojure.data.xml$seq_tree$fn__437.invoke(xml.clj:178)
        at clojure.lang.LazySeq.sval(LazySeq.java:42)
        at clojure.lang.LazySeq.seq(LazySeq.java:51)
        at clojure.lang.LazySeq.more(LazySeq.java:87)
        at clojure.lang.RT.more(RT.java:722)
        at clojure.core$rest__5388.invokeStatic(core.clj:73)
        at clojure.core$rest__5388.invoke(core.clj:73)
        at clojure.data.xml$seq_tree$fn__437$fn__447.invoke(xml.clj:186)
        at clojure.lang.LazySeq.sval(LazySeq.java:42)
        at clojure.lang.LazySeq.seq(LazySeq.java:58)
        at clojure.lang.RT.seq(RT.java:535)
        at clojure.core$seq__5402.invokeStatic(core.clj:137)
        at clojure.core$seq__5402.invoke(core.clj:137)
        at clojure.data.xml$seq_tree$fn__437.invoke(xml.clj:178)
        at clojure.lang.LazySeq.sval(LazySeq.java:42)
        at clojure.lang.LazySeq.seq(LazySeq.java:51)
        at clojure.lang.LazySeq.more(LazySeq.java:87)
        at clojure.lang.RT.more(RT.java:722)
        at clojure.core$rest__5388.invokeStatic(core.clj:73)
        at clojure.core$rest__5388.invoke(core.clj:73)
        at clojure.data.xml$seq_tree$fn__437$fn__447.invoke(xml.clj:186)
        at clojure.lang.LazySeq.sval(LazySeq.java:42)
        at clojure.lang.LazySeq.seq(LazySeq.java:58)
        at clojure.lang.RT.seq(RT.java:535)
        at clojure.core$seq__5402.invokeStatic(core.clj:137)
        at clojure.core$seq__5402.invoke(core.clj:137)
        at clojure.data.xml$seq_tree$fn__437.invoke(xml.clj:178)
        at clojure.lang.LazySeq.sval(LazySeq.java:42)
        at clojure.lang.LazySeq.seq(LazySeq.java:51)
        at clojure.lang.LazySeq.more(LazySeq.java:87)
        at clojure.lang.RT.more(RT.java:722)
        at clojure.core$rest__5388.invokeStatic(core.clj:73)
        at clojure.core$rest__5388.invoke(core.clj:73)
        at clojure.data.xml$seq_tree$fn__437$fn__447.invoke(xml.clj:186)
        at clojure.lang.LazySeq.sval(LazySeq.java:42)
        at clojure.lang.LazySeq.seq(LazySeq.java:58)
        at clojure.lang.RT.seq(RT.java:535)
        at clojure.core$seq__5402.invokeStatic(core.clj:137)
        at clojure.core$seq__5402.invoke(core.clj:137)
        at clojure.data.xml$seq_tree$fn__437.invoke(xml.clj:178)
        at clojure.lang.LazySeq.sval(LazySeq.java:42)
        at clojure.lang.LazySeq.seq(LazySeq.java:51)
        at clojure.lang.LazySeq.more(LazySeq.java:87)
        at clojure.lang.RT.more(RT.java:722)
        at clojure.core$rest__5388.invokeStatic(core.clj:73)
        at clojure.core$rest__5388.invoke(core.clj:73)
        at clojure.data.xml$seq_tree$fn__437$fn__447.invoke(xml.clj:186)
        at clojure.lang.LazySeq.sval(LazySeq.java:42)
        at clojure.lang.LazySeq.seq(LazySeq.java:58)
        at clojure.lang.RT.seq(RT.java:535)
        at clojure.core$seq__5402.invokeStatic(core.clj:137)
        at clojure.core$seq__5402.invoke(core.clj:137)
        at clojure.data.xml$seq_tree$fn__437.invoke(xml.clj:178)
        at clojure.lang.LazySeq.sval(LazySeq.java:42)
        at clojure.lang.LazySeq.seq(LazySeq.java:51)
        at clojure.lang.LazySeq.more(LazySeq.java:87)
        at clojure.lang.RT.more(RT.java:722)
        at clojure.core$rest__5388.invokeStatic(core.clj:73)
        at clojure.core$rest__5388.invoke(core.clj:73)
        at clojure.data.xml$seq_tree$fn__437$fn__447.invoke(xml.clj:186)
        at clojure.lang.LazySeq.sval(LazySeq.java:42)
        at clojure.lang.LazySeq.seq(LazySeq.java:58)
        at clojure.lang.RT.seq(RT.java:535)
        at clojure.core$seq__5402.invokeStatic(core.clj:137)
        at clojure.core$seq__5402.invoke(core.clj:137)
        at clojure.data.xml$seq_tree$fn__437.invoke(xml.clj:178)
        at clojure.lang.LazySeq.sval(LazySeq.java:42)
        at clojure.lang.LazySeq.seq(LazySeq.java:51)
        at clojure.lang.LazySeq.first(LazySeq.java:73)
        at clojure.lang.RT.first(RT.java:692)
        at clojure.core$first__5384.invokeStatic(core.clj:55)
        at clojure.core$first__5384.invoke(core.clj:55)
        at clojure.data.xml$seq_tree$fn__437$fn__445.invoke(xml.clj:185)
        at clojure.lang.LazySeq.sval(LazySeq.java:42)
        at clojure.lang.LazySeq.seq(LazySeq.java:51)
        at clojure.lang.Cons.next(Cons.java:39)
        at clojure.lang.RT.next(RT.java:713)
        at clojure.core$next__5386.invokeStatic(core.clj:64)
        at clojure.zip$right.invokeStatic(zip.clj:153)
        at clojure.zip$right.invoke(zip.clj:149)
        at clojure.data.zip$right_locs$fn__2688.invoke(zip.clj:28)
        at clojure.lang.LazySeq.sval(LazySeq.java:42)
        at clojure.lang.LazySeq.seq(LazySeq.java:51)
        at clojure.lang.RT.seq(RT.java:535)
        at clojure.core$seq__5402.invokeStatic(core.clj:137)
        at clojure.core$map$fn__5866.invoke(core.clj:2746)
        at clojure.lang.LazySeq.sval(LazySeq.java:42)
        at clojure.lang.LazySeq.seq(LazySeq.java:51)
        at clojure.lang.RT.seq(RT.java:535)
        at clojure.core$seq__5402.invokeStatic(core.clj:137)
        at clojure.core$filter$fn__5893.invoke(core.clj:2809)
        at clojure.lang.LazySeq.sval(LazySeq.java:42)
        at clojure.lang.LazySeq.seq(LazySeq.java:51)
        at clojure.lang.LazySeq.first(LazySeq.java:73)
        at clojure.lang.RT.first(RT.java:692)
        at clojure.core$first__5384.invokeStatic(core.clj:55)
        at clojure.core$first__5384.invoke(core.clj:55)
        at mirthsync.actions$process_nodes.invokeStatic(actions.clj:91)
        at mirthsync.actions$process_nodes.invoke(actions.clj:85)
        at mirthsync.actions$download.invokeStatic(actions.clj:108)
        at mirthsync.actions$download.invoke(actions.clj:103)
        at mirthsync.apis$iterate_apis.invokeStatic(apis.clj:152)
        at mirthsync.apis$iterate_apis.invoke(apis.clj:146)
        at mirthsync.core$run$fn__4635.invoke(core.clj:44)
        at mirthsync.http_client$with_authentication.invokeStatic(http_client.clj:58)
        at mirthsync.http_client$with_authentication.invoke(http_client.clj:45)
        at mirthsync.core$run.invokeStatic(core.clj:32)
        at mirthsync.core$run.invoke(core.clj:10)
        at mirthsync.core$main_func$fn__4653.invoke(core.clj:70)
        at mirthsync.core$main_func.invokeStatic(core.clj:69)
        at mirthsync.core$main_func.doInvoke(core.clj:65)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at clojure.core$apply.invokeStatic(core.clj:665)
        at clojure.core$apply.invoke(core.clj:660)
        at mirthsync.core$_main.invokeStatic(core.clj:81)
        at mirthsync.core$_main.doInvoke(core.clj:79)
        at clojure.lang.RestFn.applyTo(RestFn.java:137)
        at mirthsync.core.main(Unknown Source)
ParseError at [row,col]:[269273,37]
Message: Character reference "&#x17" is an invalid XML character.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions