如何实现从XML文件输出现有值和更改后的值? 我正在使用以下代码来更改xml文件中的配置:
trait Wrapper[T] {
type Own[F[_]] <: OwnThing[F, T]
def ask[F[_]](implicit own: Own[F])
}
object Wrapper {
type Aux[T, Own0[F[_]] <: OwnThing[F, T]] = Wrapper[T] { type Own[F[_]] = Own0[F] }
}
class CombinedWrapper[A, B, OwnA[F[_]] <: OwnThing[F, A], OwnB[F[_]] <: OwnThing[F, B]](
val wrapperA: Wrapper.Aux[A, OwnA], val wrapperB: Wrapper.Aux[B, OwnB]
) extends Wrapper[(A, B)] {
override type Own[F[_]] = SomeOwnThing[F, A, B, OwnA[F], OwnB[F]]
override def ask[F[_]](implicit own: Own[F]) = ???
}
我需要获得两个值的输出(已存在和已更改)。 如果我使用方括号:
[xml]$config = gc $DirectoryPath\Web.config
$config.configuration.appSettings.Item(0).value = "new-value1"
$config.configuration.appSettings.Item(1).value = "new-value2"
$config.Save("$DirectoryPath\Web.config")
我正在获得所需的输出结果:
value1 = new-value1
但XML文件中的更改不适用。
如果我从输出的XML文件中获取现有的行号,那也很好,例如:
value1 = new-value1 at line #10
答案 0 :(得分:1)
不能同时输出XML元素并为其分配新值。使用两个语句:
Write-Host $config.configuration.appSettings.Item(0).value
$config.configuration.appSettings.Item(0).value = "new-value1"
如果要输出两个值,请在分配新值后添加另一个Write-Host
语句。
您可以通过先为变量分配父对象来缩短语句的时间:
$appSettings = $config.configuration.appSettings
Write-Host $appSettings.Item(0).value # output old value
$appSettings.Item(0).value = "new-value1"
Write-Host $appSettings.Item(0).value # output new value
如果您试图在同一输出行中获得新旧值,则可以执行以下操作:
$appSettings = $config.configuration.appSettings
Write-Host -NoNewline $appSettings.Item(0).value # output old value
$appSettings.Item(0).value = "new-value1"
Write-Host " =" $appSettings.Item(0).value # output new value
或者先将值分配给另一个变量,然后再进行更改,然后再输出两个值:
$appSettings = $config.configuration.appSettings
$oldvalue = $appSettings.Item(0).value
$appSettings.Item(0).value = "new-value1"
Write-Host ('{0} = {1}' -f $oldvalue, $appSettings.Item(0).value)
关于获取行号,XML不是面向行的格式,因此无法使用。