OBJECT Codeunit 50092 XML Info and Doctype { OBJECT-PROPERTIES { Date=18.03.11; Time=15:05:37; Modified=Yes; Version List=EXAMPLE; } PROPERTIES { OnRun=BEGIN CLEAR(XMLDOMDocument); CREATE(XMLDOMDocument); ChangeXMLFile(XMLDOMDocument); END; } CODE { VAR XMLDOMDocument@1000000000 : Automation "{F5078F18-C551-11D3-89B9-0000F81FE221} 6.0:{F6D90F11-9C73-11D3-B32E-00C04F990BB4}:'Microsoft XML, v6.0'.DOMDocument"; XMLDOC@1000000016 : Automation "{F5078F18-C551-11D3-89B9-0000F81FE221} 6.0:{F6D90F11-9C73-11D3-B32E-00C04F990BB4}:'Microsoft XML, v6.0'.DOMDocument"; XMLNode@1000000007 : Automation "{F5078F18-C551-11D3-89B9-0000F81FE221} 6.0:{2933BF80-7B36-11D2-B20E-00C04F983E60}:'Microsoft XML, v6.0'.IXMLDOMNode"; XMLNode2@1000000008 : Automation "{F5078F18-C551-11D3-89B9-0000F81FE221} 6.0:{2933BF80-7B36-11D2-B20E-00C04F983E60}:'Microsoft XML, v6.0'.IXMLDOMNode"; XMLNode3@1000000019 : Automation "{F5078F18-C551-11D3-89B9-0000F81FE221} 6.0:{2933BF80-7B36-11D2-B20E-00C04F983E60}:'Microsoft XML, v6.0'.IXMLDOMNode"; XMLDomAttribute@1000000014 : Automation "{F5078F18-C551-11D3-89B9-0000F81FE221} 6.0:{2933BF85-7B36-11D2-B20E-00C04F983E60}:'Microsoft XML, v6.0'.IXMLDOMAttribute"; XMLChildDomNode@1000000015 : Automation "{F5078F18-C551-11D3-89B9-0000F81FE221} 6.0:{2933BF80-7B36-11D2-B20E-00C04F983E60}:'Microsoft XML, v6.0'.IXMLDOMNode"; Separator@1000000009 : Text[30]; Ch10@1000000010 : Char; Ch13@1000000011 : Char; Ch9@1000000012 : Char; XMLProcIns@1000000013 : Automation "{F5078F18-C551-11D3-89B9-0000F81FE221} 6.0:{2933BF89-7B36-11D2-B20E-00C04F983E60}:'Microsoft XML, v6.0'.IXMLDOMProcessingInstruction"; XMLDomRootNode@1000000020 : Automation "{F5078F18-C551-11D3-89B9-0000F81FE221} 6.0:{2933BF80-7B36-11D2-B20E-00C04F983E60}:'Microsoft XML, v6.0'.IXMLDOMNode"; NodeNameGlobal@1000000021 : Text[30]; XMLDocHeader@1000000017 : Automation "{F5078F18-C551-11D3-89B9-0000F81FE221} 6.0:{F6D90F11-9C73-11D3-B32E-00C04F990BB4}:'Microsoft XML, v6.0'.DOMDocument"; XMLDomHeaderRootNode@1000000006 : Automation "{F5078F18-C551-11D3-89B9-0000F81FE221} 6.0:{2933BF80-7B36-11D2-B20E-00C04F983E60}:'Microsoft XML, v6.0'.IXMLDOMNode"; PROCEDURE ChangeXMLFile@1100000002(VAR MSDOM2@1000000000 : Automation "{F5078F18-C551-11D3-89B9-0000F81FE221} 6.0:{F6D90F11-9C73-11D3-B32E-00C04F990BB4}:'Microsoft XML, v6.0'.DOMDocument"); BEGIN //GenerateXMLHeaderFile('OrderEnv'); //////////////////// NodeNameGlobal := 'OrderEnv'; IF ISCLEAR(XMLDocHeader) THEN BEGIN CREATE(XMLDocHeader); XMLDocHeader.async := FALSE; END; Ch10 := 10; Ch13 := 13; Ch9 := 9; Separator := FORMAT(Ch13) + FORMAT(Ch10) + FORMAT(Ch9); //Cancel validation because loadXML will try to send to parser and it will fail because of external DTD XMLDocHeader.validateOnParse(FALSE); //Insert the header you want/need to use. It seems you must have root or something like it. //You can add a boolean in front of this command to verify that it loaded. XMLDocHeader.loadXML( '<?xml version="1.0" encoding="UTF-8" ?>' + Separator + '<!DOCTYPE OrderEnv SYSTEM "http://integratex.quality.techdata.de:8080/ix/dtd/ixOrder4.dtd">' + Separator + '<'+ NodeNameGlobal +'></'+ NodeNameGlobal +'>'); XMLDomHeaderRootNode := XMLDocHeader.selectSingleNode(NodeNameGlobal); MESSAGE(FORMAT(XMLDomHeaderRootNode.nodeName)); //////////////////// IF ISCLEAR(XMLDOC) THEN BEGIN CREATE(XMLDOC); XMLDOC.async := FALSE; END; XMLNode := XMLDOC.createNode(1,FORMAT('OrderEnv'),''); XMLDOC.appendChild(XMLNode); XMLDomRootNode := XMLNode; XMLNode2 := XMLDOC.createNode(1,FORMAT('TestNode'),''); XMLNode.appendChild(XMLNode2); XMLChildDomNode := XMLNode2; XMLDomAttribute := XMLDOC.createAttribute('attribute1'); XMLDomAttribute.value := FORMAT('attribute 1 value'); XMLChildDomNode.attributes.setNamedItem(XMLDomAttribute); XMLNode2 := XMLDOC.createNode(1,FORMAT('TestNode2'),''); XMLNode.appendChild(XMLNode2); //XMLDocHeader.replaceChild(XMLDomRootNode,XMLDomHeaderRootNode); //These were made for testing... //XMLDocHeader.save('C:\Temp\Header1.xml'); XMLDOC.save('C:\Temp\Content2.xml'); END; PROCEDURE GenerateXMLHeaderFile@1000000012(NodeNameLocal@1000000000 : Text[30]); VAR Ch10@1000000004 : Integer; CH13@1000000003 : Integer; CH9@1000000002 : Integer; Separator@1000000001 : Text[30]; BEGIN IF ISCLEAR(XMLDocHeader) THEN BEGIN CREATE(XMLDocHeader); XMLDocHeader.async := FALSE; END; Ch10 := 10; CH13 := 13; CH9 := 9; Separator := FORMAT(CH13) + FORMAT(Ch10) + FORMAT(CH9); //Cancel validation because loadXML will try to send to parser and it will fail because of external DTD XMLDocHeader.validateOnParse(FALSE); //Insert the header you want/need to use. It seems you must have root or something like it. //You can add a boolean in front of this command to verify that it loaded. XMLDocHeader.loadXML( '<?xml version="1.0" encoding="UTF-8" ?>' + Separator + '<!DOCTYPE OrderEnv SYSTEM "http://integratex.quality.techdata.de:8080/ix/dtd/ixOrder4.dtd">' + Separator + '<'+ NodeNameLocal +'></'+ NodeNameLocal +'>'); XMLDomHeaderRootNode := XMLDocHeader.selectSingleNode(NodeNameLocal); MESSAGE(FORMAT(XMLDomHeaderRootNode.nodeName)); END; EVENT XMLDOMDocument@1000000000::ondataavailable@198(); BEGIN END; EVENT XMLDOMDocument@1000000000::onreadystatechange@-609(); BEGIN END; EVENT XMLDOC@1000000016::ondataavailable@198(); BEGIN END; EVENT XMLDOC@1000000016::onreadystatechange@-609(); BEGIN END; EVENT XMLDocHeader@1000000017::ondataavailable@198(); BEGIN END; EVENT XMLDocHeader@1000000017::onreadystatechange@-609(); BEGIN END; BEGIN { NodeNameGlobal := 'OrderEnv'; IF ISCLEAR(XMLDocHeader) THEN BEGIN CREATE(XMLDocHeader); XMLDocHeader.async := FALSE; END; Ch10 := 10; Ch13 := 13; Ch9 := 9; Separator := FORMAT(Ch13) + FORMAT(Ch10) + FORMAT(Ch9); //Cancel validation because loadXML will try to send to parser and it will fail because of external DTD XMLDocHeader.validateOnParse(FALSE); //Insert the header you want/need to use. It seems you must have root or something like it. //You can add a boolean in front of this command to verify that it loaded. XMLDocHeader.loadXML( '<?xml version="1.0" encoding="UTF-8" ?>' + Separator + '<!DOCTYPE OrderEnv SYSTEM "http://integratex.quality.techdata.de:8080/ix/dtd/ixOrder4.dtd">' + Separator + '<'+ NodeNameGlobal +'></'+ NodeNameGlobal +'>'); XMLDomHeaderRootNode := XMLDocHeader.selectSingleNode(NodeNameGlobal); MESSAGE(FORMAT(XMLDomHeaderRootNode.nodeName)); } END. } }