Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#和PowerShell中的XPATH问题_C#_.net_Xml_Powershell_Xpath - Fatal编程技术网

C#和PowerShell中的XPATH问题

C#和PowerShell中的XPATH问题,c#,.net,xml,powershell,xpath,C#,.net,Xml,Powershell,Xpath,我有以下XML文件,我想打印出baseAddress值,然后更改该值并将更新写入同一个XML文件 我的问题是,我正在PowerShell中使用以下脚本进行操作,似乎无法检索相关值。我想原因可能是元素名“system.serviceModel”中有一个符号“.”,PowerShell认为我要在system下检索serviceModel子元素是哪个?你知道如何检索baseAddress的正确值吗 $FooConfig = [xml](get-content .\Foo.exe.config -Err

我有以下XML文件,我想打印出baseAddress值,然后更改该值并将更新写入同一个XML文件

我的问题是,我正在PowerShell中使用以下脚本进行操作,似乎无法检索相关值。我想原因可能是元素名“system.serviceModel”中有一个符号“.”,PowerShell认为我要在system下检索serviceModel子元素是哪个?你知道如何检索baseAddress的正确值吗

$FooConfig = [xml](get-content .\Foo.exe.config -ErrorAction:stop)
FooConfig.configuration.system.serviceModel.services.service.host.baseAddress

<configuration>
  <system.serviceModel>
    <services>
      <service name="FooImpl" behaviorConfiguration="mexServiceBehavior">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:9090/Foo" />
          </baseAddresses>
        </host>
      </service>
    </services>
  </system.serviceModel>
</configuration>
$FooConfig=[xml](获取内容。\Foo.exe.config-ErrorAction:stop)
FooConfig.configuration.system.serviceModel.services.service.host.baseAddress
提前感谢,,
George

如果在元素名称周围加上“.”引号,就可以得到它

使用


$FooConfig.configuration.“system.serviceModel.services.service.host.baseAddress

如果在元素名称周围加上“.”引号,则可以得到它

使用


$FooConfig.configuration.“system.serviceModel.services.service.host.baseAddress

在某些情况下,只使用XPATH和XML API更容易,例如:

PS> $FooConfig.SelectSingleNode('//add[@baseAddress]').baseAddress = 'foo'
PS> $FooConfig.SelectSingleNode('//add[@baseAddress]').baseAddress
foo
与:

PS> $xml.configuration.'system.serviceModel'.services.service.host.baseaddresses.add.baseaddress = 'foo'
PS> $xml.configuration.'system.serviceModel'.services.service.host.baseaddresses.add.baseaddress
foo

在某些情况下,只使用XPATH和XML API更容易,例如:

PS> $FooConfig.SelectSingleNode('//add[@baseAddress]').baseAddress = 'foo'
PS> $FooConfig.SelectSingleNode('//add[@baseAddress]').baseAddress
foo
与:

PS> $xml.configuration.'system.serviceModel'.services.service.host.baseaddresses.add.baseaddress = 'foo'
PS> $xml.configuration.'system.serviceModel'.services.service.host.baseaddresses.add.baseaddress
foo

嗨,乔治,什么版本的PowerShell?嗨,乔治,什么版本的PowerShell?谢谢Andy,我有解决方案,$FooConfig.configuration。“system.serviceModel”。services.service.host.baseAddresses.add.baseAddress谢谢Andy,我有解决方案,$FooConfig.configuration。“system.serviceModel”.services.service.host.baseAddresses.add.baseaddress