我正在执行一个 PS 脚本来读取 xml 的内容,更新一些标签值并将内容存储到多个 xml 文件中。我能够实现所有这些,但是创建的 xml 文件没有被传递到的消息队列正确读取。但是当我打开它并单击保存而不对数据进行任何更改时,相同的 xml 文件在队列中工作。我比较了 2 个文件 1 - 创建后和 2 - 打开相同并单击保存后,它们是相同的!我一生都无法弄清楚出了什么问题以及如何解决它。
如何以可读格式创建输出 xml 文件?不确定当我在 xml 文件上单击“保存”时会发生什么变化。请帮忙。
输入 CASH.XML:
<?xml version="1.0" encoding="UTF-8"?>
<ns:POSTransaction xmlns:ns="http://schema.xyz.com/Commerce/Customer/Transaction/v1">
<ns:tranHeader>
<ns:transactionId>96846836238236142669</ns:transactionId>
<ns:businessDateTime>2021-12-25T01:10:00</ns:businessDateTime>
<ns:emailId>Perftesting002@ymail.com</ns:emailId>
</ns:tranHeader>
</ns:POSTransaction>
PS:
$log="H:\logs.txt"
[xml]$loadXML = Get-Content "H:\Q_This\CASH.XML"
try
{
$tranID = $loadXML.POSTransaction.tranHeader.transactionId.substring(17,3)
$tranIntID = [int]$tranID
$tranc = $loadXML.POSTransaction.tranHeader.transactionId.substring(0,17)
$uname = $loadXML.POSTransaction.tranHeader.emailId.substring(0,11)
$mailcnt = [int]$loadXML.POSTransaction.tranHeader.emailId.substring(11,3)
$mailend = $loadXML.POSTransaction.tranHeader.emailId.Split("@")[1]
for ($mailcnt; $mailcnt -lt 10; $mailcnt++)
{
for ([int]$i =1; $i -le 5; $i++)
{
$mailupd = ([string]($mailcnt+1)).PadLeft(3,'0')
$tranIntID = $tranIntID+1
$loadXML.POSTransaction.tranHeader.transactionId = $tranc+[string]$tranIntID
$loadXML.POSTransaction.tranHeader.emailId = $uname+$mailupd+'@'+$mailend
$fileName = "CASH_"+$tranIntID+"_"+$mailupd+".XML"
$loadXML.Save("H:\Q_This\"+$fileName)
}
}
}
catch
{
Write-Host $_.Exception.Message
Add-content $log -value ([string](Get-Date) + ' ' +$_.Exception.Message)
}
上面的代码创建了 40 个输出 xml 文件:来自 Performancetest 003-010 @ymail.com的每个 emailID 的 5 个事务文件。但是,直到我打开并单击保存(没有数据更改)之前,消息队列都没有识别到它。