Hello
I am currently writting a script that constrcut a hashtable from xml and reconstruct object with the hashtable
function import-xml([xml]$xml){
foreach ($object in $xml) {
}
}
function getproperty($currentproperty) {
foreach ($property in $object){
if ($currentproperty=$null) {
$currentproperty = $property
}
$currentProperty|ForEach-Object{
if ($property.property) {
getproperty $property
}
else {
rehydrate $property
}
}
}
}
function rehydrate($property){
$a=New-Object array
$object=New-Object $property.type
if ($property.Value) {
foreach($value in $property){
$a.add($value)
}
$a = $a-join ","
Invoke-Expression '$object=($a) '
$object
}
elseif ($property.NoteProperty) {
$psobject = New-Object $property.type
foreach($noteproperty in $property){
$psobject|Add-Member $noteproperty.name $noteproperty.innertext
}
$psobject
}
elseif ($property.key) {
$hashtable =New-Object $property.type
foreach ($key in $property) {
$hashtable[$key.name]=$key.innertext
}
}
else {
}
}
the function will get the property from xml i save before and reconstruct a hashtable which will be used for construct object
but i having trouble building the hashtable
i could build a hashtable like this easily
$HASHTABLE =@{
X=1
Y=1
Z=1}
i don’t know how to build a hashtable with mulitiple depth like this in script
$hashtable=@{
roadcoordinate=@{
roadcoordinate1=@{
x=1
y=1
z=1
}
roadcoordinate2=@{
x=1
y=1
z=1
}
}
dimension="the_End"
name=$null
}
Here is the xml which i used
<?xml version="1.0" encoding="utf-8"?>
<Objects>
<Object Type="test">
<Property Name="param1" Type="System.String">
<value>1</value>
</Property>
<Property Name="param2" Type="System.Int32">
<value>2</value>
</Property>
<Property Name="param3" Type="array">
<value>1</value>
<value>2</value>
<value>3</value>
</Property>
<Property Name="param4" Type="System.Management.Automation.PSCustomObject">
<noteproperty name="database">
database
</noteproperty>
<noteproperty name="server">server</noteproperty>
<noteproperty name="username">username</noteproperty>
<noteproperty name="password">password</noteproperty>
</Property>
<Property Name="param5" Type="System.Collections.Hashtable">
<key name=color>red</key>
<key name=type>fruit</key>
<key name=name>apple</key>
</property>
<property name= "param6" type="road">
<property name= "roadcoordinate" type ="roadcoordinate">
<property name="roadcoordiate1" type = "System.Numerics.Vector3">
<property name ="x" type= "system.int32">
<value>1</value>
</property>
<property name ="y" type= "system.int32">
<value>1</value>
</property>
<property name ="z" type= "system.int32">
<value>1</value>
</property>
</property>
<property name= "roadcoordinate2" type = "System.Numerics.Vector3">
</property>
</property>
</property>
<property name="id"></property>
<property name="dimension"></property>
<property name="name"></property>
</property>
</Objects>