[mapguide-users] Modify mapdefinition in a layout
euskalmap
ziburudebian at free.fr
Fri Mar 20 11:18:43 EDT 2009
Hi,
I have try your maestro class in my sample like this :
http://patxi.mayol.free.fr/sample2.asp
http://patxi.mayol.free.fr/sample2.asp
I have always the same error.
In the mapguide log file it say 'An exception occurred in the XML parser.'
and at the end i say about an error in
MgResourceContentManager.ValidateDocument.
Perhaps, Mapguide server can not find the WebLayout.1.0.0.xsd file ?
What you think about it?.
NB:It is very strange that there is no problem with filter in layer and as
much problem to modify mapdefinition in layout !!!
Thanks
Kenneth Skovhede, GEOGRAF A/S wrote:
>
> It looks like it is bad, I try not to deal with xml as text strings.
> You can do this instead:
> System.IO.MemoryStream ms = new System.IO.MemoryStream();
> doc.Save(ms);
> byte[] encodedBytes = ms.ToArray();
>
> No encoding stuff needed, and you get the document as it would look when
> written to a file.
> Unfortunately this seems to add the BOM, which breaks MapGuide.
> In the MaestroAPI, I use this class:
> http://svn.osgeo.org/mapguide/trunk/Tools/Maestro/MaestroAPI/Utf8XmlWriter.cs
>
> Regards, Kenneth Skovhede, GEOGRAF A/S
>
>
>
> euskalmap skrev:
>> When i load the xml with this instruction :
>> XmlDocument doc = new XmlDocument();
>> String xmlLayoutDef = byteReader.ToString();
>> there is the preamble <?xml version="1.0" encoding="utf-8"?>
>> Later, the instruction
>> String xmlString = doc.DocumentElement.OuterXml;
>> remove the preamble.
>> Other information : if i load the file
>> http://patxi.mayol.free.fr/Untitled1.xml
>> http://patxi.mayol.free.fr/Untitled1.xml in an editor XML like altova,
>> for
>> example, i have this message when i want to save it : This file is not
>> valid: Unable to load schema with target namespace " from
>> 'WebLayout-1.0.0.xsd''.
>> So, is this instruction String xmlString = doc.DocumentElement.OuterXml;
>> bad
>> ? I have find in sample on the forum?
>>
>> What you think about it?.
>> Thanks
>>
>> Kenneth Skovhede, GEOGRAF A/S wrote:
>>
>>> Ok, that file does not have the preamble (the "<?xml version=\"1.0\"
>>> encoding=\"utf-8\"?>" string).
>>> Not sure if it fixes your problem if you add it, but its worth a try.
>>>
>>> The line mentioned seems to only check that the first element
>>> (WebLayout) matches the xsd file (WebLayout).
>>>
>>> I wrote about the doublequote, because there was a line with:
>>> char doublequote = (char)34;
>>> which works, but is not very intuitive and suggests that someone did not
>>> know how to escape doublequotes.
>>>
>>> Regards, Kenneth Skovhede, GEOGRAF A/S
>>>
>>>
>>>
>>> euskalmap skrev:
>>>
>>>> I have do
>>>> using(System.IO.FileStream fs = System.IO.File.Create("test.xml"))
>>>> fs.Write(encodedDefinition, 0, encodedDefinition.Length);
>>>>
>>>> The result is here : http://patxi.mayol.free.fr/test.xml
>>>> http://patxi.mayol.free.fr/test.xml
>>>>
>>>> How know that my document have the utf-8 xml preamble ?
>>>>
>>>> About the string "xmlns=\"namespace\"", i have not this in my xml file.
>>>> Thanks
>>>>
>>>>
>>>>
>>>> Kenneth Skovhede, GEOGRAF A/S wrote:
>>>>
>>>>
>>>>> I'm am a bit puzzled by this:
>>>>>
>>>>> String xmlString = doc.DocumentElement.OuterXml;
>>>>> ...
>>>>> "After modif = \ n "+"<? xml version ='1 .0 'encoding =' UTF-8'?>"+
>>>>> xmlString
>>>>>
>>>>> It seems that the xmlString is missing the xml preamble?
>>>>> Just to clarify: the document MUST have the utf-8 xml preamble, and
>>>>> MUST
>>>>> NOT have the utf-8 BOM.
>>>>>
>>>>> The file you sent does not appear to be made from the encoded data.
>>>>> You must do something like:
>>>>> using(System.IO.FileStream fs = System.IO.File.Create("test.xml"))
>>>>> fs.Write(encodedDefinition, 0, encodedDefinition.Length);
>>>>>
>>>>> Otherwise there are too many places that can introduce small
>>>>> differences.
>>>>>
>>>>> btw, in C#, you can make a string with quotes like this:
>>>>> "xmlns=\"namespace\""
>>>>> or
>>>>> @"xmlns=""namespace""" //VB style
>>>>>
>>>>> Regards, Kenneth Skovhede, GEOGRAF A/S
>>>>>
>>>>>
>>>>>
>>>>> euskalmap skrev:
>>>>>
>>>>>
>>>>>> The file is generate in my code after the instruction
>>>>>> 'resourceSrvc.SetResource(webLayoutId, contentByteSource.GetReader(),
>>>>>> null);' So, i do not understand why the file is fine and my
>>>>>> mapdefinition
>>>>>> in
>>>>>> my layout generate the error An exception occurred in the XML parser.
>>>>>>
>>>>>> If you have few minutes you can see the trace of my function
>>>>>> ag_SetLayoutMap
>>>>>> here : http://patxi.mayol.free.fr/Trace.htm
>>>>>> http://patxi.mayol.free.fr/Trace.htm
>>>>>> and a sample of my C# code here :
>>>>>> http://patxi.mayol.free.fr/sample.asp
>>>>>> http://patxi.mayol.free.fr/sample.asp , who is describe the
>>>>>> ag_SetLayoutMap
>>>>>> function.
>>>>>> thanks
>>>>>> regards, Francis
>>>>>>
>>>>>> Kenneth Skovhede, GEOGRAF A/S wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>> Is this a question?
>>>>>>>
>>>>>>> The un-edited file loads fine for me.
>>>>>>>
>>>>>>> Regards, Kenneth Skovhede, GEOGRAF A/S
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> euskalmap skrev:
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> Hi,
>>>>>>>> I have not send the good link of my file; in the previous version ,
>>>>>>>> i
>>>>>>>> have
>>>>>>>> trying to delete in the xml the string
>>>>>>>> "xsi:noNamespaceSchemaLocation="WebLayout-1.0.0.xsd".
>>>>>>>> So, my file is : http://patxi.mayol.free.fr/Untitled1.xml
>>>>>>>> http://patxi.mayol.free.fr/Untitled1.xml
>>>>>>>>
>>>>>>>> So i test GetResourceContent rather than SetResource :
>>>>>>>> If i try http://localhost/mapguide/mapagent/index.html
>>>>>>>> http://localhost/mapguide/mapagent/index.html with
>>>>>>>> GetResourceContent
>>>>>>>> on
>>>>>>>> "Library://Ag Base/Mpg Urbanisme.WebLayout" and submit, i have this
>>>>>>>> result :
>>>>>>>>
>>>>>>>> http://n2.nabble.com/file/n2490672/test.jpg
>>>>>>>>
>>>>>>>> The message in header, in french, is in english : This file XML
>>>>>>>> does
>>>>>>>> not
>>>>>>>> seem to have of information of style associated with him. The tree
>>>>>>>> of
>>>>>>>> the
>>>>>>>> document is shown below.
>>>>>>>>
>>>>>>>> SO
>>>>>>>>
>>>>>>>> Kenneth Skovhede, GEOGRAF A/S wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>> A bit tricky, something to do with how .Net handles Xml I think.
>>>>>>>>>
>>>>>>>>> The document is missing the attribute:
>>>>>>>>> xsi:noNamespaceSchemaLocation="WebLayout-1.0.0.xsd"
>>>>>>>>>
>>>>>>>>> Which is required, because it is used for versioning and
>>>>>>>>> validation.
>>>>>>>>> If you take your document and open this page:
>>>>>>>>> http://localhost/mapguide/mapagent/index.html
>>>>>>>>>
>>>>>>>>> Then click "Resource" -> "SetResource", point out the file,
>>>>>>>>> and in the "ResourceID" field type: "Library://mytest.WebLayout".
>>>>>>>>>
>>>>>>>>> Then set the "Content" field to point to the file and click
>>>>>>>>> submit.
>>>>>>>>> You will see the error you mention.
>>>>>>>>>
>>>>>>>>> Now add the above attribute, so the second line in the document
>>>>>>>>> becomes:
>>>>>>>>> <WebLayout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>>>>>>> xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>>>>>>>>> xsi:noNamespaceSchemaLocation="WebLayout-1.0.0.xsd">
>>>>>>>>>
>>>>>>>>> Save the document, click back in the browser, and then "Submit"
>>>>>>>>> once
>>>>>>>>> more.
>>>>>>>>> This time it works. (Remember to check that the ResourceID and
>>>>>>>>> Content
>>>>>>>>> field has not been reset).
>>>>>>>>>
>>>>>>>>> Regards, Kenneth Skovhede, GEOGRAF A/S
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> euskalmap skrev:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>> Hi,
>>>>>>>>>> Yes, i have see the log file, but there is no more information
>>>>>>>>>> that
>>>>>>>>>> 'XML
>>>>>>>>>> Parser error'.
>>>>>>>>>> The logfile is :
>>>>>>>>>> http://n2.nabble.com/file/n2474100/logfile.jpg
>>>>>>>>>>
>>>>>>>>>> About the XML file, after modification i have this file :
>>>>>>>>>> http://patxi.mayol.free.fr/mytest.xml
>>>>>>>>>> http://patxi.mayol.free.fr/mytest.xml
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Thanks
>>>>>>>>>> regards
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Kenneth Skovhede, GEOGRAF A/S wrote:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> Did you look in the error.log file?
>>>>>>>>>>> Could you try to save the xml document after modification, and
>>>>>>>>>>> send
>>>>>>>>>>> a
>>>>>>>>>>> link to it?
>>>>>>>>>>>
>>>>>>>>>>> Regards, Kenneth Skovhede, GEOGRAF A/S
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> euskalmap skrev:
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>> Hi,
>>>>>>>>>>>> In fact, before modification, i have
>>>>>>>>>>>> MgResourceIdentifier webLayoutId = new
>>>>>>>>>>>> MgResourceIdentifier(pst_weblayout)
>>>>>>>>>>>> with pst_weblayout = "Library://Ag Base/MyLayout.WebLayout"
>>>>>>>>>>>> I search the xml node for modify Mapdefinition resource and
>>>>>>>>>>>> after modification i have in instruction
>>>>>>>>>>>> webLayoutId = new MgResourceIdentifier(str_NewMapDefinition)
>>>>>>>>>>>> with
>>>>>>>>>>>> str_NewMapDefinition=Session:xxxxxxxxx//MyMap.MapDefinition
>>>>>>>>>>>> So, i set the resource and i have the message 'An exception
>>>>>>>>>>>> occurred
>>>>>>>>>>>> in
>>>>>>>>>>>> the
>>>>>>>>>>>> XML parser.'
>>>>>>>>>>>> I say it is simply to migrate vb to c#, but before i want to
>>>>>>>>>>>> understand.
>>>>>>>>>>>> I have use same sample who use this method on the forum; but i
>>>>>>>>>>>> do
>>>>>>>>>>>> not
>>>>>>>>>>>> explain where is my bug?
>>>>>>>>>>>> thanks a lot for your help
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Kenneth Skovhede, GEOGRAF A/S wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>> It is very trivial to convert the sample to C#... in fact I
>>>>>>>>>>>>> just
>>>>>>>>>>>>> did:
>>>>>>>>>>>>> http://trac.osgeo.org/mapguide/wiki/maestro/MaestroAPI/samples/CustomizedZoomWithWebLayout
>>>>>>>>>>>>>
>>>>>>>>>>>>> If you just want to understand what happens, there should be a
>>>>>>>>>>>>> more
>>>>>>>>>>>>> verbose message in the error.log:
>>>>>>>>>>>>> C:\Program Files\MapGuideOpenSource2.0\Server\logs\error.log
>>>>>>>>>>>>>
>>>>>>>>>>>>> Also, are you certain that the pst_map is a valid map
>>>>>>>>>>>>> identifier,
>>>>>>>>>>>>> and
>>>>>>>>>>>>> that str_NewMapDefinition is a valid resource identifier?
>>>>>>>>>>>>>
>>>>>>>>>>>>> I'm guessing that pst_map is a string like:
>>>>>>>>>>>>> "Library://map.MapDefinition", so your str_NewMapDefinition
>>>>>>>>>>>>> becomes:
>>>>>>>>>>>>> Session:<sessionid>//Library://map.MapDefinition.MapDefinition
>>>>>>>>>>>>>
>>>>>>>>>>>>> Regards, Kenneth Skovhede, GEOGRAF A/S
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> euskalmap skrev:
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>> It do not run with the parameter false in the instruction
>>>>>>>>>>>>>> UTF8Encoding
>>>>>>>>>>>>>> utf8
>>>>>>>>>>>>>> = new UTF8Encoding(false);
>>>>>>>>>>>>>> In your link sample(
>>>>>>>>>>>>>> http://trac.osgeo.org/mapguide/wiki/maestro/MaestroAPI/samples/CustomizedZoomWithWebLayout
>>>>>>>>>>>>>> http://trac.osgeo.org/mapguide/wiki/maestro/MaestroAPI/samples/CustomizedZoomWithWebLayout
>>>>>>>>>>>>>> ), it is a vb code with the mapguide maetro api; i will not
>>>>>>>>>>>>>> change
>>>>>>>>>>>>>> all
>>>>>>>>>>>>>> my
>>>>>>>>>>>>>> code because i use c# with mapguide api; i want to undestand
>>>>>>>>>>>>>> why
>>>>>>>>>>>>>> it
>>>>>>>>>>>>>> do
>>>>>>>>>>>>>> not
>>>>>>>>>>>>>> run; i use the same method to change the filter in layers and
>>>>>>>>>>>>>> it
>>>>>>>>>>>>>> run
>>>>>>>>>>>>>> very
>>>>>>>>>>>>>> well ! what's append in my code?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> thanks
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Kenneth Skovhede, GEOGRAF A/S wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> You need to create the UTF8Encoding object with the
>>>>>>>>>>>>>>> parameter
>>>>>>>>>>>>>>> "false"
>>>>>>>>>>>>>>> (meaning disable BOM).
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> A slightly easier way to do this:
>>>>>>>>>>>>>>> http://trac.osgeo.org/mapguide/wiki/maestro/MaestroAPI/samples/CustomizedZoomWithWebLayout
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Regards, Kenneth Skovhede, GEOGRAF A/S
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> euskalmap skrev:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Hi
>>>>>>>>>>>>>>>> I provide the end user with a link to my special page (see
>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>> code1).
>>>>>>>>>>>>>>>> In
>>>>>>>>>>>>>>>> that page i redirect to the MapGuide viewer files
>>>>>>>>>>>>>>>> (Response.Redirect).
>>>>>>>>>>>>>>>> code1:
>>>>>>>>>>>>>>>> http://n2.nabble.com/file/n2462320/sample1.jpg
>>>>>>>>>>>>>>>> The fonction SetLayout Map modify the mapdefinition in my
>>>>>>>>>>>>>>>> layout.
>>>>>>>>>>>>>>>> See
>>>>>>>>>>>>>>>> image
>>>>>>>>>>>>>>>> here :
>>>>>>>>>>>>>>>> http://n2.nabble.com/file/n2462320/sample2.jpg
>>>>>>>>>>>>>>>> The problem : the layout is not modify and i have this
>>>>>>>>>>>>>>>> message
>>>>>>>>>>>>>>>> :
>>>>>>>>>>>>>>>> An
>>>>>>>>>>>>>>>> exception occurred in the XML parser.
>>>>>>>>>>>>>>>> Have you an idea ?
>>>>>>>>>>>>>>>> Thanks
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>>> mapguide-users mailing list
>>>>>>>>>>>>>>> mapguide-users at lists.osgeo.org
>>>>>>>>>>>>>>> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>> mapguide-users mailing list
>>>>>>>>>>>>> mapguide-users at lists.osgeo.org
>>>>>>>>>>>>> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> mapguide-users mailing list
>>>>>>>>>>> mapguide-users at lists.osgeo.org
>>>>>>>>>>> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> mapguide-users mailing list
>>>>>>>>> mapguide-users at lists.osgeo.org
>>>>>>>>> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> mapguide-users mailing list
>>>>>>> mapguide-users at lists.osgeo.org
>>>>>>> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>> _______________________________________________
>>>>> mapguide-users mailing list
>>>>> mapguide-users at lists.osgeo.org
>>>>> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>> _______________________________________________
>>> mapguide-users mailing list
>>> mapguide-users at lists.osgeo.org
>>> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>>>
>>>
>>>
>>
>>
>
> _______________________________________________
> mapguide-users mailing list
> mapguide-users at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>
>
--
View this message in context: http://n2.nabble.com/Modify-mapdefinition-in-a-layout-tp2462320p2509419.html
Sent from the MapGuide Users mailing list archive at Nabble.com.
More information about the mapguide-users
mailing list