xml - 使用 powershell 编辑 XML ID 值
问题描述
如何为 XML 文件设置值?这是我的 XML 文件:
<?xml version="1.0"?>
-<settings version="2">
<setting id="noteid">266</setting>
</settings>
这是我的代码,但它不工作
$filePath = 'C:\Users\EA\Desktop\settings.xml '
$xml=New-Object XML
$xml.Load($filePath)
$nodes = $xml.SelectNodes('/settings/noteid');
foreach($node in $nodes)
{
$node.SetAttribute('type', '1234');
}
$xml.Save($filePath)
做了一些搜索,但对我没有任何帮助。任何想法?
解决方案
如果我理解正确,您已经为我们提供了一个非常简短的 XML 外观示例,因此我在这里对其进行了一些扩展:
<?xml version="1.0"?>
<settings version="2">
<setting id="noteid">266</setting>
<setting id="someotherid">12345</setting>
<setting id="anothersettingsid">987</setting>
</settings>
您可以使用“点”(不区分大小写)方法来更改 id 为“noteid”的设置值,如下所示:
$newNoteId = 987654321
$filePath = 'C:\Users\EA\Desktop\settings.xml'
[xml]$xml = Get-Content -Path $filePath -Raw
($xml.settings.setting | Where-Object { $_.id -eq 'noteid' }).InnerText = $newNoteId
$xml.Save($filePath)
或者使用 XPath(记住这是区分大小写的..)
$newNoteId = 987654321
$filePath = 'C:\Users\EA\Desktop\settings.xml'
[xml]$xml = Get-Content -Path $filePath -Raw
$xml.SelectNodes('//setting[@id="noteid"]') | ForEach-Object { $_.InnerText = $newNoteId }
$xml.Save($filePath)
在这两种情况下,结果都是:
<?xml version="1.0"?>
<settings version="2">
<setting id="noteid">987654321</setting>
<setting id="someotherid">12345</setting>
<setting id="anothersettingsid">987</setting>
</settings>
推荐阅读
- tensorflow - 张量流中的常规模型检查点和保存的模型有什么区别?
- raspberry-pi - RaspberryPi 上的 Pharo:启动时未找到模块
- r - 如果字符串与向量中的最后一个和下一个不同,则替换它
- php - PHP 标头重定向,如果变量则重定向
- r - R:在 R 函数中使用 Lubridate ymd() 时出现日期解析错误,相同的代码在我编写的函数之外工作
- solr - 索引所有字段是否会对 Solr 产生负面影响?
- networking - destination port in UDP protocol
- c - Unexpected result in integration of a function
- javascript - Failed to return promise in protractor framework from javascript function called from another file
- python - Web Scrape python, submit search form on website not changing url