我已经用Google搜索了如何做到这一点,我很难理解。我目前有这个XML
<?xml version="1.0" encoding="utf-8"?>
<gl:GLOBALLISTS Xmlns:gl="http://schemas.microsoft.com/VisualStudio/2005/workitemtracking/globallists">
<GLOBALLIST name="ListOfVersions - PWCC">
<LISTITEM value="1.1.3.2705" />
<LISTITEM value="1.1.4.2801" />
<LISTITEM value="1.1.4.2802" />
<LISTITEM value="1.1.4.2803" />
<LISTITEM value="1.1.4.2804" />
<LISTITEM value="1.1.5.2901" />
<LISTITEM value="1.1.5.2902" />
<LISTITEM value="Unknown" />
</GLOBALLIST>
</gl:GLOBALLISTS>
在C:\驱动器位置。我想使用PowerShell使用$ NewListItem添加新的列表项值。所以每次我需要时都可以指定。所以列表现在将包含1.1.5.2903作为示例。我尝试使用其他网站上提供的其他代码,但没有运气。
任何帮助都会非常适合
答案 0 :(得分:0)
以下是如何操作的(但您需要将输入更改为有效的XML,&x; xmlns&#39;必须为小写)。
PS C:\temp> cat t.xml
<?xml version="1.0" encoding="utf-8"?>
<gl:GLOBALLISTS xmlns:gl="http://schemas.microsoft.com/VisualStudio/2005/workitemtracking/globallists">
<GLOBALLIST name="ListOfVersions - PWCC">
<LISTITEM value="1.1.3.2705" />
<LISTITEM value="1.1.4.2801" />
<LISTITEM value="1.1.4.2802" />
<LISTITEM value="1.1.4.2803" />
<LISTITEM value="1.1.4.2804" />
<LISTITEM value="1.1.5.2901" />
<LISTITEM value="1.1.5.2902" />
<LISTITEM value="Unknown" />
</GLOBALLIST>
</gl:GLOBALLISTS>
PS C:\temp> [xml]$data = [xml](get-content c:\temp\t.xml)
PS C:\temp> $item = $data.CreateElement('LISTITEM')
PS C:\temp> $item.SetAttribute('value', "1.1.5.2903")
PS C:\temp> [void]$data.GLOBALLISTS.GLOBALLIST.appendChild($item)
PS C:\temp> $data.save('c:\temp\t2.xml')
PS C:\temp> cat t2.xml
<?xml version="1.0" encoding="utf-8"?>
<gl:GLOBALLISTS xmlns:gl="http://schemas.microsoft.com/VisualStudio/2005/workitemtracking/globallists">
<GLOBALLIST name="ListOfVersions - PWCC">
<LISTITEM value="1.1.3.2705" />
<LISTITEM value="1.1.4.2801" />
<LISTITEM value="1.1.4.2802" />
<LISTITEM value="1.1.4.2803" />
<LISTITEM value="1.1.4.2804" />
<LISTITEM value="1.1.5.2901" />
<LISTITEM value="1.1.5.2902" />
<LISTITEM value="Unknown" />
<LISTITEM value="1.1.5.2903" />
</GLOBALLIST>
</gl:GLOBALLISTS>
如果您有多个GLOBALLIST
项,则需要使用XPath选择合适的项:
$node = $data.SelectSingleNode("//GLOBALLIST[@name='ListOfVersions - PWCC']")
$node.appendChild($item)
或者您可以匹配部分属性:
$node = $data.SelectSingleNode("//GLOBALLIST[contains(@name, 'ListOfVersions']")