3

当我的脚本一次从 Intacct100 xml object中提取数据时,一切工作正常,使用 myresultid记住偏移量并拉下一次,由于某种原因,它进入了一个循环并抛出一个错误,说not well-formed (invalid token): line 1, column 57565知道我在始终使用相同的凭据。抛出该错误后,它会跳过 100 个对象并移动到下一个对象并继续提取数据。

我的问题是:出现错误后如何回滚,以便resultid在抛出错误时不会跳过数据?是否有一个函数或我应该添加到我的 XML 查询中的东西?

请参阅下面的我当前的 XML 查询。

谢谢!

headers     = {'Content-type': 'x-intacct-xml-request'}   
API_URL     = 'https://api.intacct.com/ia/xml/xmlgw.phtml'
req_shell_next="""<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE request SYSTEM "intacct_request.v2.1.dtd">
    <request>
      <control>
        <senderid>%s</senderid>
        <password>%s</password>
        <controlid>testRequestId</controlid>
        <uniqueid>false</uniqueid>
        <dtdversion>3.0</dtdversion>
        <includewhitespace>false</includewhitespace>
      </control>
      <operation>
        <authentication>
          <login>
            <userid>%s</userid>
            <companyid>%s</companyid>
            <password>%s</password>
          </login>
        </authentication>
        <content>
          <function controlid="PostJSONObjectCID">
            <readMore>
               <resultId>%s</resultId>
            </readMore>
          </function>
        </content>
      </operation>
    </request>"""

request_data_next               = urllib2.Request(API_URL, req_shell_next % (auth_info_senderid, auth_info_password, auth_info_userid, auth_info_companyid, auth_info_userpw, resultId ), headers)
response_str_data_next          = urllib2.urlopen(request_data_next).read()
response_xml_data_next          = ET.ElementTree(ET.fromstring(response_str_data_next))
4

1 回答 1

0

无法在readMore查询(文档)中将光标移回。

您的问题不在 Intacct 方面,而是在应用程序代码上:在使用 lxml 或任何其他 XML 解析器解析响应期间。因此,您需要在那里进行错误处理(至少尝试/除外)和/或重试。

请保存来自 Intacct 的原始响应,以便您能够调查或调试解析问题。

于 2021-06-02T13:42:58.283 回答