小编Dis*_*oat的帖子

在Powershell中设置xml值失败,导致属性'...'在此对象上找不到

我正在尝试加载csproj文件并在Powershell中更改它的根名称空间。

csproj文件的xml如下所示:

<Project...xmlsns="   >
    <PropertyGroup>
        <RootNamespace>SomeNamespace</RootNamespace>
Run Code Online (Sandbox Code Playgroud)

...

我可以获取价值,按属性浏览

> $xmlDoc = (Get-Content myProject.csproj)

> $xmlDoc.Project.PropertyGroup.RootNamespace ## Outputs SomeNamespace
Run Code Online (Sandbox Code Playgroud)

但是我无法分配给它-在Powershell中设置xml值失败,并在该对象上找不到属性'...'...

我已经用手工制作的xml文件尝试过并成功

<Test>
   <TestInner1>
      <TestInner2>SomeValue</TestInner2>
   </TestInner1>
</Test>

>$xmlDoc = [xml](Get-Content test.xml)
>$xmlDoc.Test.TestInner1.TestInner2 = "Some Other Value"
>$xmlDoc.Test.TestInner1.TestInner2 ## Returns Some Other Value
Run Code Online (Sandbox Code Playgroud)

我修改了TestInner2下的元素-添加了其他元素,即自封闭元素。我已经为Test添加了名称空间。在每种情况下仍然能够设置值。

在Powershell ISE中,获取类型的智能感知我注意到,在我的测试xml中,每个Test,TestInner1和TestInner2都是XmlElements。但是,在项目文件上,Project和PropertyGroup是XmlElements-但是Intellisense停止了,并且不提供RootNamespace。当我得到PropertyGroup的类型时,它是一个Object [],而RootNamespace是字符串。RootNamespace声称是{get; 组; 但我在设置时遇到了上述错误。

如果有一个对项目文件有效的解决方法,我很感兴趣,但是我同样也想知道为什么上面两个示例不同,即我缺少了什么!

xml powershell

4
推荐指数
1
解决办法
1944
查看次数

标签 统计

powershell ×1

xml ×1