Próbuję zmienić wartość kilku węzłów w bardzo dużym pliku XML załadowanym do pamięci z formularza internetowego.Zmień wartość XML w pamięci za pomocą xQuery
Plik uzyskuje się w ten sposób:
let $file := xdmp:get-request-field("xml_to_upload")
Więc, jak widać plik znajduje się w pamięci.
Teraz potrzebuję zmienić wartość tysięcy węzłów, i jak dotąd nie byłem w stanie zrobić tego w optymalny sposób.
Wszelkie pomysły?
Niektóre rzeczy mam tryied tej pory:
let $auxVar :=
if($fileStructureIsValid) then
(
for $currentNode in xdmp:unquote($file)//ID
let $log := xdmp:log(fn:concat("newNodeValue", ": ", mem:replace($currentNode, element ID{ fn:concat($subject, "-", fn:data($currentNode)) })))
return fn:concat($subject, "-", fn:data($currentNode))
)
else
(
)
Biblioteka mem jest zwyczaj pobrać jeden.
Dla kompletności, trzeci alternatywą jest zastosowanie transformacji XSLT do dokumentu w pamięci. – ehennum