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”的方法-嵌套节点的处理方式是否不同?这是因为有多个员工节点-您必须选择要在其中创建子节点的节点。请接受这个答案,如果你不能让它工作,请开始另一个问题。