Skip to main content

Hi, I am using a PythonCaller to create an XML string. When I send this string through an XMLTemplater, all "<>" brackets are converted to "&lt;" and "&gt;" (html encodings). Adding a StringReplacer/StringPairReplacer to replace all brackets works fine but can take some time for larger content . Is there a way to prevent the XMLTemplater from converting brackets to encoded brackets?

 

String valuebecomes:

Result_XMLTemplater

If you want to insert an xml fragment into the xml template you need to use {fme:get-xml-attribute("xml")}. For this to work however, it needs to be a valid xml fragment which your example is not


Thanks


Hi @Jasper Wisbecq​ , in this case, this template (XQuery) expression would work.

<Asset>{
    for $x in tokenize(fme:get-attribute("output"),'\s')
    return parse-xml($x)
}</Asset>

 


Hi @Jasper Wisbecq​ , in this case, this template (XQuery) expression would work.

<Asset>{
    for $x in tokenize(fme:get-attribute("output"),'\s')
    return parse-xml($x)
}</Asset>

 

These are the sort of examples that all need to be gathered up and put in the helpfiles as I mentioned @Dale Lutz​ 


If you want to insert an xml fragment into the xml template you need to use {fme:get-xml-attribute("xml")}. For this to work however, it needs to be a valid xml fragment which your example is not

If I add a root node to the fragment, the get-xml-attribute works perfectly indeed. However, for my particular case, the root node is undesired, and I would need a StringReplacer to remove it again after the XMLTemplater. Though this would already be much faster than having to replace all brackets, the solution of @Takashi Iijima​ suits even better


Hi @Jasper Wisbecq​ , in this case, this template (XQuery) expression would work.

<Asset>{
    for $x in tokenize(fme:get-attribute("output"),'\s')
    return parse-xml($x)
}</Asset>

 

Great, thank you Takashi


Reply