You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#集成QuickBooks:带时间范围的DepositQuery遇XML解析错误求助

Fixing QuickBooks XML Parsing Error for DepositQuery with Date Range

嘿,我之前做QuickBooks集成的时候也踩过这个日期格式的坑,太懂这种“去掉日期就正常,加了就炸”的崩溃感了!咱们一步步排查解决:

1. 先检查日期格式是否符合QuickBooks要求

QuickBooks对XML里的日期格式有严格的规范,必须是yyyy-MM-dd(仅日期)或者yyyy-MM-ddTHH:mm:ss(带时间)的格式,绝对不能用MM/dd/yyyy这种本地化格式。比如你不能写01/01/2024,必须写成2024-01-01。

如果你的C#代码里是直接把DateTime对象转字符串,一定要指定格式:

var fromDate = DateTime.Now.AddMonths(-3).ToString("yyyy-MM-dd");
var toDate = DateTime.Now.ToString("yyyy-MM-dd");

2. 确认XML节点结构是否正确

DepositQuery的日期过滤必须放在TxnDateRangeFilter节点下,而且节点名称要完全匹配(大小写敏感!),不能拼错。正确的XML结构应该是这样的:

<?xml version="1.0" encoding="utf-8"?>
<DepositQuery xmlns="http://developer.intuit.com/">
  <TxnDateRangeFilter>
    <FromTxnDate>2024-01-01</FromTxnDate>
    <ToTxnDate>2024-04-01</ToTxnDate>
  </TxnDateRangeFilter>
</DepositQuery>

注意:

  • 不要遗漏根节点的命名空间xmlns="http://developer.intuit.com/"
  • TxnDateRangeFilter、FromTxnDate、ToTxnDate这些节点名必须和官方文档完全一致,大小写不能错

3. 排查XML编码和特殊字符

确保你的XML是用utf-8编码生成的,有些C# XML生成工具默认可能用其他编码,导致QuickBooks解析失败。另外,日期里不要有多余的空格、制表符或者特殊字符。

4. 查看实际发送的XML内容

最直接的方法是把你代码生成的XML打印出来(或者抓包),对比QuickBooks官方的DepositQuery示例找差异。比如你可以在C#里把XML对象转成字符串输出:

var xmlDoc = new XmlDocument();
// 构建你的DepositQuery XML...
Console.WriteLine(xmlDoc.OuterXml);

把输出的XML和官方示例对比,很容易发现哪里写错了。

5. 验证日期范围是否合理

虽然少见,但如果你的日期范围是无效的(比如From日期晚于To日期),也可能触发解析错误,所以先确认日期逻辑是对的。

按照这几步排查,大概率能解决XML解析的问题,毕竟QuickBooks的XML校验真的很严格,一点点格式不对就会报错😅

内容的提问来源于stack exchange,提问作者B. Abdo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:08:12