all things in emacs are elisp...

You can use this function:

#+BEGIN_SRC emacs-lisp
(defun get-xml (name)
  (save-excursion
    (org-babel-goto-named-src-block name)
    (org-element-property :value (org-element-context))))
#+END_SRC

#+RESULTS:
: get-xml

like this in a python (or other general lang) block to get the xml as a string that you parse in the language:

#+BEGIN_SRC python :var data=(get-xml "xml-example")
import xml.etree.ElementTree as ET
root = ET.fromstring(data)
for child in root:
    print(child.tag, child.attrib)
#+END_SRC

#+RESULTS:
: to {}
: from {}
: heading {}
: body {}

I don't know about noweb.

John

-----------------------------------
Professor John Kitchin 
Doherty Hall A207F
Department of Chemical Engineering
Carnegie Mellon University
Pittsburgh, PA 15213
412-268-7803

On Mon, Apr 30, 2018 at 8:36 PM, stardiviner <numbchild@gmail.com> wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Thanks, John and Simonyi. This is a solution on Elisp. Not general way.
But as a intermedia step, really workable. I chose this method.

BTW, is it possible to archived with noweb reference <<xml-data>> ?
Like

#+begin_src python :var data=<<xml-data>>
...
#+end_src

- --
[ stardiviner ] don't need to convince with trends.
       Blog: https://stardiviner.github.io/
       IRC(freenode): stardiviner
       GPG: F09F650D7D674819892591401B5DF1C95AE89AC3

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEE8J9lDX1nSBmJJZFAG13xyVromsMFAlrn4LYACgkQG13xyVro
msP8ywf/VaaQkpFcV16/2NDRODkC+iNN6TCp1MRJjYL9qkppa/A8vRGPZSxIG5Sd
d2TEGx+mqRS0EANM/mhJwAIlM5U9SpycBfzasvU7R+Cn9CiehZCnJKA0dBaZiu+q
vPBifqEqOzY873XsaRS2Xty6W4NSrh8aL6hEWxiDJSafjaCxI2FvApg2JnPi6HoC
/sy9eSuIYvG8vCRow9y8E/GFcWE5EXoB/d/mdcEmGz80sB39Tjp4PGvLMyglROMa
sR+8QkUTQAtDP4uEAF7biHAGE2PcELpZVLjzWm0GfZkCdJF9tH8KrEXaorB+hyHn
MWxzlZ/gSNcsROF7DHVaZgCMMiiXuw==
=fImh
-----END PGP SIGNATURE-----