20. März 2012 17:34
Hallo,
ich habe folgendes Problem. Ich versuche manuell ein XML Dokument zu erstellen.
Dafür verwende ich die unten stehenden Datentypen (Automations).
Das was nicht passt ist das Attribut xmlns beim Node ORDER_HEADER.
Ich habe es gar nicht angelegt. Sobald das Objekt ein Attribut xmlns im Root-Node sieht,
packt es mir in die Child-Nodes.
Ich habe alles versucht, über objekte dynamisch anzubinden. Verschidene versionen vom DOMDocument,
das Code Unit XML Dom... hat nicht geholfen. Wäre super wenn jemand wüste wie das geht.
(Classic Client)
Danke im Voraus.
A
--------------------------------------------------Locals
Name DataType Subtype Length
L_DataXML Automation 'Microsoft XML, v6.0'.DOMDocument60
L_XMLElement Automation 'Microsoft XML, v6.0'.IXMLDOMElement
L_XMLAttribute Automation 'Microsoft XML, v6.0'.IXMLDOMAttribute
L_XMLNode Automation 'Microsoft XML, v6.0'.IXMLDOMNode
L_XMLOrderHeader Automation 'Microsoft XML, v6.0'.IXMLDOMNode
L_XMLOrderItemList Automation 'Microsoft XML, v6.0'.IXMLDOMNode
L_XMLOrderSummary Automation 'Microsoft XML, v6.0'.IXMLDOMNode
------------------------------------------------C/AL CODE
L_DataXML.loadXML('<ORDER xmlns="test"/>');
L_XMLNode := L_DataXML.documentElement;
L_XMLOrderHeader := L_DataXML.createNode(1,'ORDER_HEADER','');
L_XMLNode.appendChild(L_XMLOrderHeader);
------------------------------------------------XML Datei
<?xml version="1.0"?>
-<ORDER xmlns="test">
<ORDER_HEADER xmlns=""/>
</ORDER>
19. September 2012 11:03
Wie bekommt man denn die erste Zeile
"<?xml version=...>
in die XML-Datei?
19. September 2012 13:10
In den BizTalk Codeunits gibt es ein Block wo per C/AL XML-Dokumente erzeugt werden. Daran kann man sich gut orientieren.
20. September 2012 13:13
Ja, hab ich schon gesehen.
Ich habe einen ähnlichen Code wie oben angegeben. Wie hat er denn die erste Zeile da rein bekommen???
<?xml version="1.0"?>
Kann mal jemand an dem Beispiel von oben den Code veröffentlichen?
8. Oktober 2012 13:37
Grüß Dich :)
Ich arbeite zB mit der CU "XML DOM Management", diese Methode hier "xmlDoc.createProcessingInstruction".
xmlDoc ist ein Automatition:
'Microsoft XML, v6.0'.DOMDocument- Code:
PfadDateiTxt := EinrRec.Ausgabepfad + '_' + ZeitStempelTxt + '.xml';
// Doc erstellen
IF NOT CREATE(xmlDoc) THEN BEGIN
CLEAR(xmlDoc);
CREATE(xmlDoc)
END;
xmlMgt.SetNormalCase;
xmlDoc.createProcessingInstruction('xml','version="1.0"');
CurrNode := xmlDoc.appendChild(xmlProcessingInst);
CurrNode := xmlDoc.createElement('Projekt');
CurrNode := xmlDoc.appendChild(CurrNode);
// Header +++++
// Kopfdaten
xmlMgt.AddElement(CurrNode,'Kopfdaten','','',NewChild);
CurrNode1:=NewChild; //One level deeper
xmlMgt.AddElement(CurrNode1,'Version','1.1','',NewChild);
xmlMgt.AddElement(CurrNode1,'DatumDateierzeugung',vDatum,'',NewChild);
xmlMgt.AddElement(CurrNode1,'phase','xx1','',NewChild);
xmlMgt.AddElement(CurrNode1,'Absender','Nav','',NewChild);
xmlMgt.AddElement(CurrNode1,'Benutzer',vUser,'',NewChild);
// Header -----
xmlDoc.save(PfadDateiTxt);
Hoffe konnte helfen
8. Oktober 2012 14:03
XML Dom Management ist eine BizTalk Codeunit und kann nur benutzt werden, wenn der Kunde das entsprechende Modul lizensiert hat.
8. Oktober 2012 14:11
Danke für die Info.
Derzeit bin ich nur im "lokalen" test hier bei mir. Es klappt alles soweit wie ich möchte, halt nur nicht, dass ich sehr lange Texte in ein XML Tag schreiben kann.
Da xml Dateien lange Texte unterstützen, denke ich, dass es irgendwie gehen wird, ...halt nur wie.
Den Text zunächst in ein BLOB Feld schreiben und das exportieren? ...nur wie?
8. Oktober 2012 14:16
Du musst erstmal verraten, woher so ein langer text kommen soll. Es gibt ja keine unendlich langen Text-Felder in NAV.
8. Oktober 2012 14:27
Oh, da ist auch fast mein Thema:
Ich habe die Aufgabe eine pdf-Datei in eine XML-Datei zu bringen.
Also Name der Datei und die Datei selbst.
Das ganze im Base64 Code.
Hat jemand ne Idee oder am besten einen C/AL- Code als Beispiel?
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.