Skip to main content
Solved

XMLTemplater: "<>" brackets from strings are converted to html encodings in output

  • January 13, 2022
  • 6 replies
  • 219 views

jasperwis
Enthusiast
Forum|alt.badge.img+15

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

Best answer by takashi

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>

 

View original
Did this help you find an answer to your question?

6 replies

ebygomm
Influencer
Forum|alt.badge.img+32
  • Influencer
  • January 13, 2022

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


jasperwis
Enthusiast
Forum|alt.badge.img+15
  • Author
  • Enthusiast
  • January 13, 2022

Thanks


takashi
Influencer
  • Best Answer
  • January 13, 2022

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>

 


ebygomm
Influencer
Forum|alt.badge.img+32
  • Influencer
  • January 13, 2022
takashi wrote:

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​ 


jasperwis
Enthusiast
Forum|alt.badge.img+15
  • Author
  • Enthusiast
  • January 13, 2022
ebygomm wrote:

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


jasperwis
Enthusiast
Forum|alt.badge.img+15
  • Author
  • Enthusiast
  • January 13, 2022
takashi wrote:

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


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings