$Database.ImportFromXml
Overview¶
DataTable $Database.ImportFromXml ( options )
Imports xml data to specified table. Please see $Datatable.ImportFromXml for more details.
Remarks¶
This method is a wrapper method for $Datatable.ImportFromXml and DataTable.Save
Examples¶
Common use case for importing data;
// For following xml structure // <Root> // <Group> // <Name>Developers (Junior)</Name> // </Group> // </Root> $Database.ImportFromXml({ Parameters : { TargetSchema: 'HR', TargetTable: 'Groups', }, XPath : 'Groups/Group' });
Customized Column Update;
// Save organization unit positions
$Database.ImportFromXml({
Parameters : {
TargetSchema : "HR",
TargetTable : "OrganizationUnitPositions"
},
XPath : "//OrganizationUnitPositions/OrganizationUnitPosition",
Map : function(xml) {
// Update position by parent node id
this.Position = xml.Evaluate('../../Id');
}
});
Update Only Selected Columns;
$Database.ImportFromXml({
Parameters : { // Fetch from Fikstur table under Fikstur schema.
TargetSchema : 'Maclar',
TargetTable : 'Fikstur'
},
Columns : [ // Use only specified columns
{ Name : 'Id' },
{ Name : 'EvSahibiSkor' },
{ Name : 'MisafirSkor' }
],
XPath : '//MacBilgileri',
Map : function(node) { // Custom column update
this.Id = node.Evaluate('Mac/Fikstur');
this.EvSahibiSkor = node.Evaluate('Skor/EvSahibi');
this.MisafirSkor = node.Evaluate('Skor/Misafir');
}
});
Nested Insert and Update;
$Database.ImportFromXml({ // Save employee
Parameters : {
TargetSchema : 'HR',
TargetTable : 'Employee'
},
XPath : 'Identities/Identity', // Find rows under Identities/Identity xpath
ColumnsXPath : 'Employee', // Fetch column values from Employee. Final xpath
Map : function(employeeNode) {
$Database.Get({ // Fetch matching records from database
Parameters : {
TargetSchema : 'HR',
TargetTable : 'OrganizationUnitPositionMembers'
},
Where : {
Criteria : [
{ Name : 'Employee', Value : employeeNode.Evaluate('Id') }, // "Employee must equal to Employee/Id xpath value."
{ Name : 'RegistryNumber', Value : '%2', Comparison : 'Like', Condition : 'Or' } // Another criteria just for sample. "or RegistryNumber must ends with 2"
]
}
})
.DeleteAll() // Delete existing all rows
.CreateNew(function() { // Create a new row
this.Employee = employeeNode.Evaluate('Id'); // Set Employee column to "Employee/Id" xpath value.
this.OrganizationUnitPosition = employeeNode.Evaluate('Employee/Position'); // Set OrganizationUnitPosition column to "Employee/Position" xpath value.
})
.Save(); // Save this table.
}
});