我已经寻找了一段时间,但没有找到我想要做的事情。我一直在使用Powershell 5.1,因为我对此有基本的了解(真的是初学者的知识)。我正在使用Phrases.xml和Language.csv
Phrases.xml仅包含我想添加其他语言的短语的属性。行ID特定于该程序,因此不幸的是,我无法从头开始创建XML(我想我会更容易地弄清楚这一点)。
<Localise Column="Care.Role" RowID="2" Default="Bathroom" Culture="English" />
我需要添加的是新属性(本地)并更改现有属性(文化):
<Localise Column="Care.Role" RowID="2" Default="Bathroom" Local="Baño" Culture="Spanish" />
我有一个CSV文件,其中包含默认行和西班牙语行,如:
English,Spanish
Bathroom,Baño
我已经能够从文件中读取属性并将csv文件导入Powershell,但是现在我对如何真正将它们整合在一起非常执着。我可怜的尝试来解决这个问题:
$path = 'C:\Users\me\Desktop\Phrases.xml'
$Csv = Import-Csv C:\Users\me\Desktop\Language.csv
$doc = (Get-Content -Path $path)
$Csv.English | ForEach-Object {
$attribute = $doc.CreateAttribute("Local")
$attribute.Value = $Csv.Spanish
$doc.Localise.Append($attribute)
}
$xml.Save("C:\Users\me\Desktop\fsox.xml")
这使我的csv中的每一行都出现此错误: 方法调用失败,因为[System.String]不包含名为“ CreateAttribute”的方法。 在线:6字符:1 + $ attribute = $ doc.CreateAttribute(“ Local”) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:InvalidOperation:(:) [],RuntimeException + FullyQualifiedErrorId:MethodNotFound
异常设置“ Value”:“无法在节点类型'Element'上设置值。 在第7行:1个字符 + $ attribute.Value = $ Csv.Translate + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:未指定:(:) [],SetValueInvocationException + FullyQualifiedErrorId:CatchFromBaseAdapterSetValue
您不能在空值表达式上调用方法。 在线:8字符:1 + $ doc.Localise.Append($ attribute) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:InvalidOperation:(:) [],RuntimeException + FullyQualifiedErrorId:InvokeMethodOnNull
我还没有弄清楚添加属性的正确方法,更不用说改变文化了。任何帮助将不胜感激。
谢谢您的关注。