使用 QbXml 添加或修改员工时出现以下错误:QuickBooks 在解析提供的 XML 文本流时发现错误。
我尝试过 true/false(这是它返回的值)、yes/no 和 1/0;这些似乎都不起作用。
是否可以为员工设置 IsActive 字段?我错过了什么吗?
Thanks!
抛出的异常是:
{System.Runtime.InteropServices.COMException (0x80040400): QuickBooks found an error when parsing the provided XML text stream.
at Interop.QBXMLRP2.IRequestProcessor4.ProcessRequest(String ticket, String inputRequest)
at PayrolImport.Program.Main(String[] args) in Program.cs:line 251
at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()}
XML
<?xml version="1.0"?>
<?qbxml version="12.0"?>
<QBXML>
<QBXMLMsgsRq onError="stopOnError">
<EmployeeModRq>
<EmployeeMod>
<ListID>8000007D-1367847338</ListID>
<EditSequence>1367850617</EditSequence>
<FirstName>first name</FirstName>
<MiddleName>middle name</MiddleName>
<LastName>last name</LastName>
<IsActive>true</IsActive>
<Email></Email>
<AccountNumber>1</AccountNumber>
</EmployeeMod>
</EmployeeModRq>
</QBXMLMsgsRq>
</QBXML>
The orderqbXML 中 XML 元素的数量matters.
所以如果QuickBooks OSR http://developer.intuit.com/qbsdk-current/common/newosr/index.html文档显示 XML 元素的顺序应该是这样的:
<ListID >IDTYPE</ListID> <!-- required -->
<EditSequence >STRTYPE</EditSequence> <!-- required -->
<IsActive >BOOLTYPE</IsActive> <!-- optional -->
... lots of other stuff here ...
然后你发送这个:
<ListID>8000007D-1367847338</ListID>
<EditSequence>1367850617</EditSequence>
... lots of other stuff here ...
<IsActive>true</IsActive>
然后你会得到这个错误:
(0x80040400): QuickBooks 在解析提供的 XML 时发现错误
文本流。
该错误本质上是 QuickBooks 试图告诉您 XML 文档中存在一些错误。
如果您以正确的顺序发送节点,它将正常工作:
<ListID>8000007D-1367847338</ListID>
<EditSequence>1367850617</EditSequence>
<IsActive>true</IsActive>
<FirstName>first name</FirstName>
<MiddleName>middle name</MiddleName>
<LastName>last name</LastName>
附带说明一下,如果您使用 QuickBooks SDK 中包含的“XML Validator”工具,它会准确地告诉您提供给它的任何 XML 消息有什么问题。
希望有帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)