XML data load...
How can I load this XML to a grid :
<?xml version="1.0" encoding="utf-8"?>
<CycleLog>
<ErrorsList>
<Message Numerator="1" Subscriber_no="" Section="LoadMessageAttachments" File="11111569952.pdf" Status="The system cannot find the file specified.
" />
<Message Numerator="1" Subscriber_no="" Section="LoadMessageAttachments" File="11111569952.pdf" Status="The system cannot find the file specified.
" />
</ErrorsList>
</CycleLog>
<?xml version="1.0" encoding="utf-8"?>
<CycleLog>
<ErrorsList>
<Message Numerator="1" Subscriber_no="" Section="LoadMessageAttachments" File="11111569952.pdf" Status="The system cannot find the file specified.
" />
<Message Numerator="1" Subscriber_no="" Section="LoadMessageAttachments" File="11111569952.pdf" Status="The system cannot find the file specified.
" />
</ErrorsList>
</CycleLog>
Yossi
July 24,
Transform it into an element-based one.
Raciel R.L.
February 14,
AW can handle both element-based and attribute-based data - you just have to use correct XPath.
In the example above ticker and name are located in attributes while the rest of the data is inside elements. In this case you can use @ticker and @name as XPath for the first two fields and mktcap, sales, employees for others.
<companies>
<company ticker="MSFT" name="Microsoft Corporation">
<mktcap>314,571.156</mktcap>
<sales>32,187.000</sales>
<employees>55000</employees>
</company>
<company ticker="ORCL" name="Oracle Corporation">
<mktcap>62,615.266</mktcap>
<sales>9,519.000</sales>
<employees>40650</employees>
</company>
<company ticker="SAP" name="SAP">
<sales>8,296.420</sales>
</company>
</companies>
In the example above ticker and name are located in attributes while the rest of the data is inside elements. In this case you can use @ticker and @name as XPath for the first two fields and mktcap, sales, employees for others.
// set columns XPath
table.setColumns(["@ticker", "@name", "mktcap", "sales", "employees"]);
Alex (ActiveWidgets)
February 14,
Can AW handle persisted xml from ADO Recordset? If the number and nature of attributes were variable, how to load into AW? I did transform my xml into an element-based one.. It would be perfect to load this kind of xml files with a variable count of attributes..
<xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
<s:Schema id="RowsetSchema">
<s:ElementType name="row" content="eltOnly" rs:CommandTimeout="480">
<s:AttributeType name="PrimeiroNome" rs:number="1">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="50" rs:maybenull="false"/>
</s:AttributeType>
<s:AttributeType name="Sobrenome" rs:number="2">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="50" rs:maybenull="false"/>
</s:AttributeType>
<s:AttributeType name="email" rs:number="3">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="50" rs:maybenull="false"/>
</s:AttributeType>
<s:AttributeType name="TelefoneResidencial" rs:number="4">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="40" rs:maybenull="false"/>
</s:AttributeType>
<s:AttributeType name="Sexo" rs:number="5">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="1" rs:fixedlength="true" rs:maybenull="false"/>
</s:AttributeType>
<s:extends type="rs:rowbase"/>
</s:ElementType>
</s:Schema>
<rs:data>
<z:row PrimeiroNome="ROSE" Sobrenome="BEDA" email=" " TelefoneResidencial="+551150633318" Sexo="F"/>
<z:row PrimeiroNome="ROSA AM SANTA" Sobrenome="ADDLA" email="FEX@BOL.COM.BR" TelefoneResidencial="+551932945444" Sexo="F"/>
<z:row PrimeiroNome="ADA BIANCHI" Sobrenome="PIDINI" email="BNI@IG.COM.BR" TelefoneResidencial="+551236429660" Sexo="F"/>
<z:row PrimeiroNome="BRANCALY" Sobrenome="MACHAT" email=" " TelefoneResidencial="+551150612317" Sexo="F"/>
</rs:data>
</xml>
<xml xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
<s:Schema id="RowsetSchema">
<s:ElementType name="row" content="eltOnly" rs:CommandTimeout="480">
<s:AttributeType name="PrimeiroNome" rs:number="1">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="50" rs:maybenull="false"/>
</s:AttributeType>
<s:AttributeType name="Sobrenome" rs:number="2">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="50" rs:maybenull="false"/>
</s:AttributeType>
<s:AttributeType name="email" rs:number="3">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="50" rs:maybenull="false"/>
</s:AttributeType>
<s:AttributeType name="TelefoneResidencial" rs:number="4">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="40" rs:maybenull="false"/>
</s:AttributeType>
<s:AttributeType name="Sexo" rs:number="5">
<s:datatype dt:type="string" rs:dbtype="str" dt:maxLength="1" rs:fixedlength="true" rs:maybenull="false"/>
</s:AttributeType>
<s:extends type="rs:rowbase"/>
</s:ElementType>
</s:Schema>
<rs:data>
<z:row PrimeiroNome="ROSE" Sobrenome="BEDA" email=" " TelefoneResidencial="+551150633318" Sexo="F"/>
<z:row PrimeiroNome="ROSA AM SANTA" Sobrenome="ADDLA" email="FEX@BOL.COM.BR" TelefoneResidencial="+551932945444" Sexo="F"/>
<z:row PrimeiroNome="ADA BIANCHI" Sobrenome="PIDINI" email="BNI@IG.COM.BR" TelefoneResidencial="+551236429660" Sexo="F"/>
<z:row PrimeiroNome="BRANCALY" Sobrenome="MACHAT" email=" " TelefoneResidencial="+551150612317" Sexo="F"/>
</rs:data>
</xml>
Raciel R.L.
February 14,
Actually, I tried with a constant file and it didn´t work. I´m using AW 1.0.2. Here is the code piece...
<script>
// create ActiveWidgets data model - XML-based table
var table = new Active.XML.Table;
/*table.setText = function(value, i, j){
var node = this.getNode(i, j);
node.text = value; } */
// define column labels
var columns = [<%=commaSeparatedColumns%>];
table.setColumns(columns);
// provide data URL
table.setURL("xml/<%=doc&".xml"%>");
// start asyncronous data retrieval
table.request();
// create ActiveWidgets Grid javascript object
var obj = new Active.Controls.Grid;
// replace the built-in row model with the new one (defined in the patch)
obj.setModel("row", new Active.Rows.Page);
obj.setProperty("row/count", <%=intRecordCount%>);
obj.setProperty("column/count", <%=Ubound(objCols)+1%>);
// provide column labels
obj.setColumnProperty("texts", columns);
// provide external model as a grid data source
obj.setDataModel(table);
// set page size
obj.setProperty("row/pageSize", 50);
// write grid html to the page
//document.write(obj);
document.getElementById("gridDIV").innerHTML = obj;
</script>
<script>
// create ActiveWidgets data model - XML-based table
var table = new Active.XML.Table;
/*table.setText = function(value, i, j){
var node = this.getNode(i, j);
node.text = value; } */
// define column labels
var columns = [<%=commaSeparatedColumns%>];
table.setColumns(columns);
// provide data URL
table.setURL("xml/<%=doc&".xml"%>");
// start asyncronous data retrieval
table.request();
// create ActiveWidgets Grid javascript object
var obj = new Active.Controls.Grid;
// replace the built-in row model with the new one (defined in the patch)
obj.setModel("row", new Active.Rows.Page);
obj.setProperty("row/count", <%=intRecordCount%>);
obj.setProperty("column/count", <%=Ubound(objCols)+1%>);
// provide column labels
obj.setColumnProperty("texts", columns);
// provide external model as a grid data source
obj.setDataModel(table);
// set page size
obj.setProperty("row/pageSize", 50);
// write grid html to the page
//document.write(obj);
document.getElementById("gridDIV").innerHTML = obj;
</script>
Raciel R.L.
February 14,
With this file format you have to specify namespaces and also the row XPath -
// define namespaces
table.setNamespace("rs", "urn:schemas-microsoft-com:rowset");
table.setNamespace("z", "#RowsetSchema");
// set rows XPath
table.setRows("//rs:data/z:row");
// set column XPath
table.setColumns(["@PrimeiroNome", "@Sobrenome", "@email", "@TelefoneResidencial", "@Sexo"]);
Alex (ActiveWidgets)
February 14,
It JUST WORKS! Great job.. now I´ve one less layer... (XML transformation). Alex, I´ve posted a thread recently.. could you check this out please?
/datagrid.11722/large-xml-documents-sort-search.html
It´s VERY important for me.. (I´m currently handling a LARGE amount of records.. I choose XML cause client-server quering, ADO recordsets..etc.. results in a LONG time responses).
/datagrid.11722/large-xml-documents-sort-search.html
It´s VERY important for me.. (I´m currently handling a LARGE amount of records.. I choose XML cause client-server quering, ADO recordsets..etc.. results in a LONG time responses).
Raciel R.L.
February 14,
This topic is archived.
See also:
dynamic load javascript from javascript
Andres Obrero
(46)
simple clickable hyperlink from an XML data source..
Dragonmood
(12)
Loading XML data from a string var
Henk
(7)
Row Height for Multi-Line Data Cells
Dean
(22)
Problem retrieving XML data from servlet
gbegley
(8)
Editable templates with XML data model
Alex (ActiveWidgets)
(6)
XML data island
cathy
(6)
Back to support forum