Powershell:将子节点添加到XML
我有以下Powershell:将子节点添加到XML,xml,powershell,Xml,Powershell,我有以下XML树: <company> <employees> <employee name="Dwight" id="e1000" department="sales"> </employee> <employee name="Toby" id="e1001" department="hr"> </employee> <employee name="Jim" id="e10
XML
树:
<company>
<employees>
<employee name="Dwight" id="e1000" department="sales">
</employee>
<employee name="Toby" id="e1001" department="hr">
</employee>
<employee name="Jim" id="e1002" department="sales">
</employee>
</employees>
</company>
但是,我收到以下错误消息:
不能对空值表达式调用方法。在
C:\code\testing.ps1:6字符:48
+$newxmleemployee=$xmlDoc.employees.AppendChild您几乎就要拿到了。您刚刚错过了选择员工的
公司
节点:
$fileName = "C:\code\employees.xml";
$xmlDoc = [xml](Get-Content $fileName);
$newXmlEmployee = $xmlDoc.company.employees.AppendChild($xmlDoc.CreateElement("employee"));
$newXmlEmployee.SetAttribute("name","Pam");
$newXmlEmployee.SetAttribute("id","e1003");
$newXmlEmployee.SetAttribute("department","reception");
$xmlDoc.Save($fileName);
输出:
<company>
<employees>
<employee name="Dwight" id="e1000" department="sales">
</employee>
<employee name="Toby" id="e1001" department="hr">
</employee>
<employee name="Jim" id="e1002" department="sales">
</employee>
<employee name="Pam" id="e1003" department="reception" />
</employees>
</company>
你就快拿到了。您刚刚错过了选择员工的
公司
节点:
$fileName = "C:\code\employees.xml";
$xmlDoc = [xml](Get-Content $fileName);
$newXmlEmployee = $xmlDoc.company.employees.AppendChild($xmlDoc.CreateElement("employee"));
$newXmlEmployee.SetAttribute("name","Pam");
$newXmlEmployee.SetAttribute("id","e1003");
$newXmlEmployee.SetAttribute("department","reception");
$xmlDoc.Save($fileName);
输出:
<company>
<employees>
<employee name="Dwight" id="e1000" department="sales">
</employee>
<employee name="Toby" id="e1001" department="hr">
</employee>
<employee name="Jim" id="e1002" department="sales">
</employee>
<employee name="Pam" id="e1003" department="reception" />
</employees>
</company>
谢谢@Martin!现在我需要在employee节点下添加一个子节点,我尝试了:$newXmlEmployee=$xmlDoc.company.employee.employee.AppendChild($xmlDoc.CreateElement(“地址”);但我最终遇到了这个错误:方法调用失败,因为[System.Object[]]不包含名为“AppendChild”的方法-嵌套节点的处理方式是否不同?这是因为有多个员工节点-您必须选择要在其中创建子节点的节点。请接受这个答案,如果你不能让它起作用,请开始另一个问题。谢谢@Martin!现在我需要在employee节点下添加一个子节点,我尝试了:$newXmlEmployee=$xmlDoc.company.employee.employee.AppendChild($xmlDoc.CreateElement(“地址”);但我最终遇到了这个错误:方法调用失败,因为[System.Object[]]不包含名为“AppendChild”的方法-嵌套节点的处理方式是否不同?这是因为有多个员工节点-您必须选择要在其中创建子节点的节点。请接受这个答案,如果你不能让它工作,请开始另一个问题。