Estou gerando um XML usando o WRITE-XML exportando um DATASET. Mas ele esta gerando o xmlns e gostaria que não saísse, ou simplesmente apareça apenas as tabelas temporárias e não a linha do DATASET. Gostaria de excluir a linha em amarelo, ou apenas os xmlns XML GERADO <?xml version="1.0" encoding="utf-8" ?> <CustomerEnvelop xmlns:xsd="." xmlns:xsi="."> <Customers>< Customer codigo="0" nome=""/> CODIGO DEFINE VARIABLE cxml AS LONGCHAR NO-UNDO. DEF VAR h-handle AS HANDLE. /* DEFINE FRAME f-teste */ /* cxml */ /* WITH CENTERED ROW 3 TITLE "Available Customer Credit" USE-TEXT WIDTH 300. */ DEFINE TEMP-TABLE Customer FIELD ID AS INTEGER XML-NODE-TYPE "HIDDEN" FIELD Name AS CHARACTER . DEFINE TEMP-TABLE Orders FIELD Customer_ID AS INTEGER XML-NODE-TYPE "HIDDEN" FIELD Order_ID AS INTEGER XML-NODE-TYPE "HIDDEN" . DEFINE TEMP-TABLE Order FIELD ID AS INTEGER XML-NODE-TYPE "HIDDEN" FIELD Product AS CHARACTER FIELD Price AS DECIMAL . CREATE Customer. ASSIGN Customer.ID = 5367 Customer.Name = "Some Customer" . CREATE Orders. ASSIGN Orders.Customer_ID = Customer.ID Orders.Order_ID = 123 . CREATE Order. ASSIGN Order.ID = Orders.Order_ID Order.Product = "Widget" Order.Price = 59 . CREATE Order. ASSIGN Order.ID = Orders.Order_ID Order.Product = "Something" . DEFINE DATASET teste FOR Customer, Orders, Order DATA-RELATION FOR Customer, Orders RELATION-FIELDS( ID, Customer_ID ) NESTED FOREIGN-KEY-HIDDEN DATA-RELATION FOR Orders, Order RELATION-FIELDS( Order_ID, ID ) NESTED FOREIGN-KEY-HIDDEN NOT-ACTIVE REPOSITION . DATASET teste:WRITE-XML( "LONGCHAR", cxml, TRUE) . MESSAGE STRING( cxml ) VIEW-AS ALERT-BOX.
Veja se isso resolve o seu problema. Código: DEFINE VARIABLE hDoc AS HANDLE. DEFINE VARIABLE hRoot AS HANDLE. DEFINE VARIABLE hRow AS HANDLE. DEFINE VARIABLE hField AS HANDLE. DEFINE VARIABLE hText AS HANDLE. DEFINE VARIABLE hBuf AS HANDLE. DEFINE VARIABLE hDBFld AS HANDLE. DEFINE VARIABLE i AS INTEGER. DEFINE TEMP-TABLE Custt NO-UNDO FIELD cust-num AS INTEGER FIELD NAME AS CHAR. CREATE Custt. ASSIGN Custt.cust-num = 01 Custt.NAME = "Fulano". CREATE Custt. ASSIGN Custt.cust-num = 02 Custt.NAME = "Beltrano". CREATE X-DOCUMENT hDoc. CREATE X-NODEREF hRoot. CREATE X-NODEREF hRow. CREATE X-NODEREF hField. CREATE X-NODEREF hText. hBuf = BUFFER Custt:HANDLE. /*set up a root node*/ hDoc:CREATE-NODE(hRoot,"Customers","ELEMENT"). hDoc:APPEND-CHILD(hRoot). FOR EACH Custt WHERE cust-num < 5: hDoc:CREATE-NODE(hRow,"Customer","ELEMENT"). /*create a row node*/ hRoot:APPEND-CHILD(hRow). /*put the row in the tree*/ hRow:SET-ATTRIBUTE("Cust-num",STRING(cust-num)). hRow:SET-ATTRIBUTE("Name",NAME). /*Add the other fields as tags in the xml*/ REPEAT i = 1 TO hBuf:NUM-FIELDS: hDBFld = hBuf:BUFFER-FIELD(i). IF hDBFld:NAME = "Cust-num" OR hDBFld:NAME = "NAME" THEN NEXT. /*create a tag with the field name*/ hDoc:CREATE-NODE(hField, hDBFld:NAME, "ELEMENT"). /*put the new field as next child of row*/ hRow:APPEND-CHILD(hField). /*add a node to hold field value*/ hDoc:CREATE-NODE(hText, "", "TEXT"). /*attach the text to the field*/ hField:APPEND-CHILD(hText). hText:NODE-VALUE = STRING(hDBFld:BUFFER-VALUE). END. END. /*write the XML node tree to an xml file*/ hDoc:SAVE("file","c:\temp\cust.xml"). DELETE OBJECT hDoc. DELETE OBJECT hRoot. DELETE OBJECT hRow. DELETE OBJECT hField. DELETE OBJECT hText.
O que você quer é mudar o padrão do xml e até onde eu sei não tem como mudar. por que você tem que usar o dataset ? se for para jogar em uma variável longchar você pode fazer assim. usar o mesmo exemplo que te passei, só mudar a forma de salvar. hdoc:SAVE("longchar", cxml, true). MESSAGE STRING( cxml ) VIEW-AS ALERT-BOX. se não for isso, da uma lida no help sobre o WRITE-XML. abs.