From: Chris T. <chr...@gm...> - 2013-08-28 03:05:21
|
Hello Joe, Thank you for the confirmation. Very thorough. Regards, Chris On Aug 27, 2013, at 8:52 PM, Joe Wicentowski <jo...@gm...> wrote: > Hi Chris, > > Actually, I think you were right since you're serializing an XML node - not binary - out to disk. > > I can confirm your test, and edited your test to correct the media-types and to include a 3rd version, a .txt file. The text file was not duplicated. I also used the 3-arity version, sans the append parameter. And changed the XQuery version to 1.0, since nothing here requires 3.0 - just to be sure. > > And your results stand. Looks like a bug in the JSON serialization for this case. > > xquery version "1.0"; > > let $outPath1 := "/Users/whoever/Desktop/TEST001.json" > let $outPath2 := "/Users/whoever/Desktop/TEST001.xml" > let $outPath3 := "/Users/whoever/Desktop/TEST001.txt" > let $items := > <test> > <nm>rdo rje snying po</nm> > <nm>dpal ldan</nm> > <nm>mkhan po dpal tseg</nm> > <nm>khrid yig</nm> > <nm>kyis la dreng bu</nm> > <nm>gnas pa'i nyid pa</nm> > </test> > let $wrote1 := file:serialize($items, $outPath1, ("method=json", "media-type=application/json")) > let $wrote2 := file:serialize($items, $outPath2, ("method=xml", "media-type=application/xml")) > let $wrote3 := file:serialize($items, $outPath3, ("method=text", "media-type=text/plain")) > return > <ok/> > > As another test, I removed file:serialize() from the equation: > > xquery version "1.0"; > > declare option exist:serialize "method=json media-type=application/json"; > > let $items := > <test> > <nm>rdo rje snying po</nm> > <nm>dpal ldan</nm> > <nm>mkhan po dpal tseg</nm> > <nm>khrid yig</nm> > <nm>kyis la dreng bu</nm> > <nm>gnas pa'i nyid pa</nm> > </test> > return > $items > > and in eXide's "direct mode" we get only a single copy: > > { "nm" : ["rdo rje snying po", "dpal ldan", "mkhan po dpal tseg", "khrid yig", "kyis la dreng bu", "gnas pa'i nyid pa"] } > > So it seems to be the combination of JSON serialization with file:serialize(). > > Joe > > > On Tue, Aug 27, 2013 at 8:11 PM, Chris Tomlinson <chr...@gm...> wrote: > Hi Joe, > > How would I indicate to file:serialize-binary that an XML node set is to be serialized as json? > > Thanks, > Chris > > > On Aug 27, 2013, at 18:31, Joe Wicentowski <jo...@gm...> wrote: > >> Hi Chris, >> >> Haven't had the chance to run your test, but wouldn't file:serialize-binary() be the proper function for the json results? >> >> See http://exist-db.org/exist/apps/fundocs/view.html?uri=http://exist-db.org/xquery/file >> >> Joe >> >> Sent from my iPhone >> >> On Tuesday, August 27, 2013 at 7:14 PM, Chris Tomlinson wrote: >> >>> Hello, >>> >>> The following simple test illustrates that the file:serialize generates a file with 2 copies of the json output while the xml serialization is correct: >>> >>>> xquery version "3.0"; >>>> >>>> let $outPath1 := "/Users/whoever/Desktop/TEST001.json" >>>> let $outPath2 := "/Users/whoever/Desktop/TEST001.xml" >>>> let $items := >>>> <test> >>>> <nm>rdo rje snying po</nm> >>>> <nm>dpal ldan</nm> >>>> <nm>mkhan po dpal tseg</nm> >>>> <nm>khrid yig</nm> >>>> <nm>kyis la dreng bu</nm> >>>> <nm>gnas pa'i nyid pa</nm> >>>> </test> >>>> let $wrote1 := file:serialize($items, $outPath1, ("method=json", "media-type=text/javascript"), false()) >>>> let $wrote2 := file:serialize($items, $outPath2, ("method=xml", "media-type=text/xml"), false()) >>>> return >>>> ($wrote1, $wrote2) >>> >>> >>> The json and xml output from the above is attached. >>> >>> Regards, >>> Chris >>> >>> >>> >>> ------------------------------------------------------------------------------ >>> Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more! >>> Discover the easy way to master current and previous Microsoft technologies >>> and advance your career. Get an incredible 1,500+ hours of step-by-step >>> tutorial videos with LearnDevNow. Subscribe today and save! >>> http://pubads.g.doubleclick.net/gampad/clk?id=58040911&iu=/4140/ostg.clktrk >>> _______________________________________________ >>> Exist-open mailing list >>> Exi...@li... >>> https://lists.sourceforge.net/lists/listinfo/exist-open >>> >>> Attachments: >>> - TEST001.xml >>> - TEST001.json >> > |