C# 如何增加xml文件中的节点
我有一个类似这样的xml文件C# 如何增加xml文件中的节点,c#,xml,powershell,C#,Xml,Powershell,我有一个类似这样的xml文件 <?xml version="1.0" encoding="utf-8"?> <Settings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <PreviousFolderVersion>2.0.0.0</PreviousFolderVersion> <
<?xml version="1.0" encoding="utf-8"?>
<Settings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<PreviousFolderVersion>2.0.0.0</PreviousFolderVersion>
<FileMajor>2</FileMajor>
<FileMinor>0</FileMinor>
<FileBuild>0</FileBuild>
<FileRevision>0</FileRevision>
<ProductMajor>2</ProductMajor>
<ProductMinor>0</ProductMinor>
<ProductBuild>0</ProductBuild>
<ProductRevision>0</ProductRevision>
<FolderMajor>2</FolderMajor>
<FolderMinor>0</FolderMinor>
<FolderBuild>0</FolderBuild>
<FolderRevision>0</FolderRevision>
<FileVersion>2.0.0.0</FileVersion>
<ProductVersion>2.0.0.0</ProductVersion>
<FolderVersion>2.0.0.0</FolderVersion>
</Settings>
但它似乎不起作用。我得到一个错误,如下所示:
无法将“ReplaceChild”的值为“0”的参数“1”转换为
类型“System.Xml.XmlNode”:“无法转换类型的“0”值。”
“System.String”以键入“System.Xml.XmlNode”
C:\workspace\Ahltaprint\Build\buildawp.ps1:157字符:1
+$xml.Settings.ReplaceChild($newChild,$fileBuild)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+CategoryInfo:NotSpecified:(:)[],MethodException
+FullyQualifiedErrorId:MethodArgumentConversionInvalidCastArgument
显然,在Powershell中使用XML文件有多种方法,但我通常认为使用XPath表达式最简单:
$xml.SelectSingleNode("/Settings/FileBuild").InnerText = "2"
$xml.Settings.FileBuild # Produces "2"
顺便说一下,代码片段不起作用的原因是,尽管$xml.Settings
属于xmlement
类型,$xml.Settings.FileBuild
不是而是一个字符串,可能是因为它是一个“简单”元素,即没有子元素或属性
如果您获得这样的文件构建,它的类型为xmlement
,其余替换代码将正常工作:
$fileBuild = $xml.Settings.GetElementsByTagName("FileBuild")[0]
您可以通过对变量或表达式调用GetType()
来验证这一点:
$fileBuild.GetType() # Produces XmlElement
Astrotrain,感谢您的建议和示例!
$fileBuild.GetType() # Produces XmlElement