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>
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.
<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.
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>
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>
Raciel R.L.
February 14,
With this file format you have to specify namespaces and also the row XPath -
table.setNamespace("rs", "urn:schemas-microsoft-com:rowset");
table.setNamespace("z", "#RowsetSchema");
table.setRows("//rs:data/z:row");
table.setColumns(["@PrimeiroNome", "@Sobrenome", "@email", "@TelefoneResidencial", "@Sexo"]);
Alex (ActiveWidgets)
February 14,