从CSV文件添加XML属性

时间:2018-07-31 19:14:40

标签: xml csv powershell-v5.0

我已经寻找了一段时间,但没有找到我想要做的事情。我一直在使用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

我还没有弄清楚添加属性的正确方法,更不用说改变文化了。任何帮助将不胜感激。

谢谢您的关注。

0 个答案:

没有答案