在这个问题上我需要一些帮助。
我需要在xml文件的某些节点上插入属性。我的代码几乎允许我插入de属性,但不是全部。在此示例中,我有3个childNode,但是我的样本中有2、4甚至5个,结果是相同的。
我的xml的一部分:
<WrittenResource>
<ResourceLink>IVB1-20180808_01/IVB1-20180808_01_02ext.eaf</ResourceLink>
</WrittenResource>
<WrittenResource>
<ResourceLink>IVB1-20180808_01/IVB1-20180</ResourceLink>
</WrittenResource>
<WrittenResource>
<ResourceLink>IVB1-20180808_01</ResourceLink>
</WrittenResource>
我的代码:
$xmlAtt1 = $xml.CreateAttribute("ArchiveHandle");
$MediaColl=$xml.METATRANSCRIPT.Session.Resources.WrittenResource.ResourceLink
Foreach($Media in $MediaColl) {$xml.DocumentElement.FirstChild.LastChild.LastChild.FirstChild.Attributes.Append($xmlAtt1)}
这是我一直的结果。我无法弄清楚,发生了什么。
<WrittenResource>
<ResourceLink ArchiveHandle"">IVB1-20180808_01/IVB1-20180808_01_02ext.eaf</ResourceLink>
</WrittenResource>
<WrittenResource>
<ResourceLink>IVB1-20180808_01/IVB1-20180</ResourceLink>
</WrittenResource>
<WrittenResource>
<ResourceLink ArchiveHandle"">IVB1-20180808_01</ResourceLink>
再次感谢您的帮助。
答案 0 :(得分:0)
尝试以下方法:
$targets = $xml.SelectNodes("//ResourceLink")
foreach($target in $targets) {
$attrib = $target.OwnerDocument.CreateAttribute("ArchiveHandle")
$target.Attributes.Append($attrib)
}
输出:
<WrittenResource>
<ResourceLink ArchiveHandle="">IVB1-20180808_01/IVB1-20180808_01_02ext.eaf</ResourceLink>
</WrittenResource>
<WrittenResource>
<ResourceLink ArchiveHandle="">IVB1-20180808_01/IVB1-20180</ResourceLink>
</WrittenResource>
<WrittenResource>
<ResourceLink ArchiveHandle="">IVB1-20180808_01</ResourceLink>
</WrittenResource>