[Gelöst]System.Xml.XmlDocument.Load Fehler Stammelement

Bild Microsoft Dynamics NAV 2016

[Gelöst]System.Xml.XmlDocument.Load Fehler Stammelement

Beitragvon TobiasPurkl » 23. Juni 2016 15:30

Hallo liebe Community,

ich habe ein Problem beim lesen einer XML Datei.
FolgendermaĂźen gehe ich vor:
Code: Alles auswählen
    "Request XML".CREATEOUTSTREAM(Loc_Outstream);
     Loc_MessageIn.WRITE(Loc_Outstream);

    IF "Request XML".HASVALUE THEN BEGIN
      "Request XML".CREATEINSTREAM(XMLInStream);
      XMLDOMNET := XMLDOMNET.XmlDocument();
     XMLDOMNET.Load(XMLInStream);


Dabei kommt es zu diesem Fehler:

Code: Alles auswählen
Type: Microsoft.Dynamics.Nav.Types.Exceptions.NavNCLDotNetInvokeException
SuppressMessage: False
SuppressExceptionCreatedEvent: False
FatalityScope: Call
Message: Fehler bei einem Aufruf von System.Xml.XmlDocument.Load mit folgender Meldung: Das Stammelement ist nicht vorhanden.
StackTrace:
     bei Microsoft.Dynamics.Nav.Runtime.NavDotNet.Invoke[T](String methodName, UInt32 methodIndex, BindingFlags flags, ParameterModifier modifier, Type[] referenceTypes, Object[] arguments)
     bei Microsoft.Dynamics.Nav.Runtime.NavDotNet.InvokeMethod[T](Boolean isStatic, String methodName, UInt32 methodIndex, Object[] arguments)
     bei Microsoft.Dynamics.Nav.BusinessApplication.Codeunit51112.Fn_GetXMLFromBigText_Scope.OnRun()
     bei Filter.InvokeWithFilter(NavMethodScope )
     bei Microsoft.Dynamics.Nav.Runtime.NavMethodScope.Run()
     bei Microsoft.Dynamics.Nav.BusinessApplication.Codeunit51112.Fn_GetXMLEnvelopeValue_Scope.OnRun()
     bei Filter.InvokeWithFilter(NavMethodScope )
     bei Microsoft.Dynamics.Nav.Runtime.NavMethodScope.Run()
     bei Microsoft.Dynamics.Nav.BusinessApplication.Codeunit51112.Fn_GetXMLEnvelopeValue(NavBigText prm_XMLMessage, NavText prm_Node)
     bei Microsoft.Dynamics.Nav.BusinessApplication.Codeunit51111.Fn_XmlRequestHandle_Scope.OnRun()
     bei Filter.InvokeWithFilter(NavMethodScope )
     bei Microsoft.Dynamics.Nav.Runtime.NavMethodScope.Run()
  --- Ende der StapelĂĽberwachung vom vorhergehenden Ort, an dem die Ausnahme ausgelöst wurde ---
     bei Microsoft.Dynamics.Nav.Runtime.TaskHelper.Rethrow(Exception exception)
     bei Microsoft.Dynamics.Nav.Service.WebServices.ServiceBroker.Invoke(Boolean isSoapMessage, Uri url, XmlReader input, TextWriter output, NavUserAuthentication navUserAuth)
     bei Microsoft.Dynamics.Nav.Service.WebServices.NavWebService.<>c__DisplayClass5.<>c__DisplayClass7.<ProcessMessage>b__3()
     bei Microsoft.Dynamics.Nav.Service.WebServices.Disposer.Scope(Code code)
     bei Microsoft.Dynamics.Nav.Service.WebServices.WCFUtil.GetPopulatedMemoryStream(StreamFillingCallback callback)
     bei Microsoft.Dynamics.Nav.Service.WebServices.NavWebService.ProcessMessage(Message message)
     bei SyncInvokeProcessMessage(Object , Object[] , Object[] )
     bei System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
     bei System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
     bei System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
     bei System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)
     bei System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
Source: Microsoft.Dynamics.Nav.Ncl
HResult: -2146233088
----------------------------------
Type: System.Xml.XmlException
LineNumber: 0
LinePosition: 0
Message: Das Stammelement ist nicht vorhanden.
StackTrace:
     bei System.Xml.XmlTextReaderImpl.Throw(Exception e)
     bei System.Xml.XmlTextReaderImpl.ParseDocumentContent()
     bei System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
     bei System.Xml.XmlDocument.Load(XmlReader reader)
     bei System.Xml.XmlDocument.Load(Stream inStream)
Source: System.Xml
HResult: -2146232000


Das XML sieht so aus, kommt aber eben als BigText rein
Code: Alles auswählen
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
<Root xmlns="http://xxxxxxxxxxxxx">
   <Envelope>
      <MessageID>30FD98AE-CC9E-3CF0-D2D0-870F2B688F39</MessageID>
      <SourceSystem>Web</SourceSystem>
      <UserID>WebUser</UserID>
      <DocumentType>CreateReg</DocumentType>
      <DateTime>05.02.2016 08:24:30</DateTime>
   </Envelope>
   <Message>
      <Title>Title</Title>
      <Period>März - Mai 2016</Period>
      <Date>21.05. - 22.05. in Wensin (Garbek)</Date>
      <CourseCode>XXXX</CourseCode>
      <MemberID></MemberID>
      <Gender>männlich</Gender>
      <FirstName>Max</FirstName>
      <LastName>Mustermann</LastName>
      <DateOfBirth>17.06.2008</DateOfBirth>
      <Street>Musterstr</Street>
      <No>1</No>
      <PostCode>12345</PostCode>
      <City>Musterstadt</City>
      <Phone>1234567</Phone>
      <MobilePhone>123457</MobilePhone>
      <Size>L</Size>
      <AdditionalInformation></AdditionalInformation>
      <PreferedGroup></PreferedGroup>
      <AccountHolder></AccountHolder>
   </Message>
</Root>




Hat jemand eine Idee, woher der Fehler kommt?
In NAV2009 hat es noch funktioniert, allerdings war es da noch ein Automation und nun musste es ja auf DotNet umgebaut werden.
Code: Alles auswählen
IF NOT ISCLEAR(XMLDOM) THEN
  CLEAR(XMLDOM);
CALCFIELDS("Request XML");
IF "Request XML".HASVALUE THEN BEGIN
  "Request XML".CREATEINSTREAM(XMLInStream);
  CREATE(XMLDOM);
  EXIT(XMLDOM.load(XMLInStream));
END;
EXIT(FALSE);

XMLDOM   Automation   'Microsoft XML, v6.0'.DOMDocument60   


Vielen Dank,

Tobias
Zuletzt geändert von TobiasPurkl am 23. Juni 2016 17:10, insgesamt 1-mal geändert.
TobiasPurkl
 
Beiträge: 29
Registriert: 20. Juli 2010 14:03
Realer Name: Tobias Purkl
Arbeitsort: Ratingen
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2009 SP1

Re: System

Beitragvon TobiasPurkl » 23. Juni 2016 17:09

Habe eine Lösung gefunden, auch wenn ich immer noch nicht verstehe, wieso der alte Weg nicht mehr funktioniert.

Code: Alles auswählen
IF "Request XML".HASVALUE THEN BEGIN
      "Request XML".CREATEINSTREAM(XMLInStream);
      XMLDOMNET := XMLDOMNET.XmlDocument();
   
     TestBigText.READ(XMLInStream);
     TestBigText.GETSUBTEXT(TestText,1);
     
     //XMLDOMNET.Load(XMLInStream);
     XMLDOMNET.LoadXml(TestBigText);
TobiasPurkl
 
Beiträge: 29
Registriert: 20. Juli 2010 14:03
Realer Name: Tobias Purkl
Arbeitsort: Ratingen
Bezug zu Microsoft Dynamics: Microsoft Partner
Microsoft Dynamics Produkt: Microsoft Dynamics NAV
Microsoft Dynamics Version: 2009 SP1


ZurĂĽck zu NAV 2016

Wer ist online?

Mitglieder in diesem Forum: Unbekannter Crawler und 1 Gast

cron