在PowerShell中我试图在“PmtDate”标签之后立即将新节点插入XML中,但我无法弄清楚如何解决此错误。
无法转换参数“1”,值为:“2016-01-20”,“InsertAfter”键入“System.Xml.XmlNode”:“无法转换”2016-01-20“值键入“System.String”类型“System.Xml.XmlNode”。“ 在C:\ StackOverflow.ps1:17 char:3 + $ Employee.Employment.Payment.InsertAfter($ LateReason,$ test); + + CategoryInfo:NotSpecified:(:) [],MethodException + FullyQualifiedErrorId:MethodArgumentConversionInvalidCastArgument
简化的XML文件
<?xml version="1.0" encoding="UTF-8"?>
<GovTalkMessage xmlns="http://www.govtalk.gov.uk/CM/envelope">
<EnvelopeVersion>2.0</EnvelopeVersion>
<Body>
<IRenvelope xmlns="http://www.govtalk.gov.uk/taxation/PAYE/RTI/FullPaymentSubmission/15-16/1">
<FullPaymentSubmission>
<Employee>
<EmployeeDetails>
<Name>
<Ttl>MR</Ttl>
<Fore>BURT</Fore>
<Sur>BURT</Sur>
</Name>
</EmployeeDetails>
<Employment>
<PayId>11111</PayId>
<Payment>
<PayFreq>M1</PayFreq>
<PmtDate>2016-01-20</PmtDate>
<MonthNo>10</MonthNo>
</Payment>
</Employment>
</Employee>
</FullPaymentSubmission>
</IRenvelope>
</Body>
</GovTalkMessage>
PowerShell脚本
$Path = "\\c03fps01v\StackOverflow.xml"
$FPS=[xml](Get-Content $Path);
# Loops through each employee in the FPS File
foreach( $Employee in $FPS.GovTalkMessage.Body.IREnvelope.FullPaymentSubmission.Employee)
{
# Creates new XML element, sets value to H and then appends at the parent level
$LateReason=$FPS.CreateElement("LateReason","http://www.govtalk.gov.uk/taxation/PAYE/RTI/FullPaymentSubmission/15-16/1")
$LateReason.set_InnerText("H")
$test=$Employee.Employment.Payment.PmtDate;
$Employee.Employment.Payment.InsertAfter($LateReason, $test);
}
所需的XML
<?xml version="1.0" encoding="UTF-8"?>
<GovTalkMessage xmlns="http://www.govtalk.gov.uk/CM/envelope">
<EnvelopeVersion>2.0</EnvelopeVersion>
<Body>
<IRenvelope xmlns="http://www.govtalk.gov.uk/taxation/PAYE/RTI/FullPaymentSubmission/15-16/1">
<FullPaymentSubmission>
<Employee>
<EmployeeDetails>
<Name>
<Ttl>MR</Ttl>
<Fore>BURT</Fore>
<Sur>BURT</Sur>
</Name>
</EmployeeDetails>
<Employment>
<PayId>11111</PayId>
<Payment>
<PayFreq>M1</PayFreq>
<PmtDate>2016-01-20</PmtDate>
<LateReason>H</LateReason>
<MonthNo>10</MonthNo>
</Payment>
</Employment>
</Employee>
</FullPaymentSubmission>
</IRenvelope>
</Body>
</GovTalkMessage>
答案 0 :(得分:0)
上述回复全部归功于“PetSerAl”。
while (((end-start) / CLOCKS_PER_SEC) < seconds)
end = clock();