Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml QuickBooks客户查询响应_Xml_Vb.net_Quickbooks - Fatal编程技术网

Xml QuickBooks客户查询响应

Xml QuickBooks客户查询响应,xml,vb.net,quickbooks,Xml,Vb.net,Quickbooks,我不是XML专家,这是我试图解决的问题。当我运行客户列表查询时,我得到了这个XML响应表单QuickBooks,正如您在节点中看到的,子节点并不总是相同的,我已经尝试使用xmlDocument从子节点和获取值,当我试图读取节点时,我得到一个错误,因为它不在所有实例上 是否有办法知道节点何时不存在并继续下一个客户?或者,有没有一种方法可以查询这两个字段的快速账簿,即客户名称和信用额度 请求如下: Private Shared Function GenerateXmlRequest_Custom

我不是XML专家,这是我试图解决的问题。当我运行客户列表查询时,我得到了这个XML响应表单QuickBooks,正如您在节点
中看到的,子节点并不总是相同的,我已经尝试使用xmlDocument从子节点
获取值,当我试图读取节点
时,我得到一个错误,因为它不在所有
实例上

是否有办法知道节点何时不存在并继续下一个客户?或者,有没有一种方法可以查询这两个字段的快速账簿,即客户名称和信用额度

请求如下:

  Private Shared Function GenerateXmlRequest_CustomerQuery()

    Dim sbRequest As StringBuilder = New StringBuilder()

    sbRequest.Append("<?xml version=""1.0"" encoding=""utf-8"" ?>")
    sbRequest.Append("<?qbxml version=""" & ClsCommon.GetQBVersion + """?>")
    sbRequest.Append("<QBXML>")
    sbRequest.Append("<QBXMLMsgsRq onError=""continueOnError"">")
    sbRequest.Append("<CustomerQueryRq requestID = ""0"">")
    sbRequest.Append("<ActiveStatus >ActiveOnly</ActiveStatus>")
    sbRequest.Append("</CustomerQueryRq>")
    sbRequest.Append("</QBXMLMsgsRq>")
    sbRequest.Append("</QBXML>")
    Return sbRequest.ToString()
End Function
私有共享函数GenerateXmlRequest\u CustomerQuery()
Dim sbRequest As StringBuilder=新建StringBuilder()
sbRequest.追加(“”)
sbRequest.追加(“”)
sbRequest.追加(“”)
sbRequest.追加(“”)
sbRequest.追加(“”)
sbRequest.Append(“仅活动”)
sbRequest.追加(“”)
sbRequest.追加(“”)
sbRequest.追加(“”)
返回sbRequest.ToString()
端函数
以下是回应:


800002FB-1556242302
2019-04-25T20:31:42-06:00
2019-06-24T15:13:21-06:00
1556242302
A公司
A公司
真的
0
1245
1245
没有一个
电子邮件
800002F4-1554669899
2019-04-07T15:44:59-06:00
2019-09-16T12:15:42-06:00
1568654142
B公司
B公司
真的
0
B公司
B公司
B公司
0
0
80000002-1544571801
B公司
8000
没有一个
电子邮件
800002F6-1555095868
2019-04-12T14:04:28-06:00
2019-04-12T14:04:28-06:00
1555095868
C公司
C公司
真的
0
0
0
没有一个
电子邮件
800002F7-1555096260
2019-04-12T14:11:00-06:00
2019-09-16T12:15:30-06:00
1568654130
D公司
D公司
真的
800002F6-1555095868
D公司
1.
0
0
2000
没有一个
电子邮件

使用Xml序列化。空项目将为空

Imports System.Xml
Imports System.Xml.Serialization
Module Module1
    Const FILENAME = "c:\temp\test.xml"
    Sub Main()
        Dim reader As XmlReader = XmlReader.Create(FILENAME)

        Dim serializer As New XmlSerializer(GetType(QBXML))

        Dim qbxml As QBXML = serializer.Deserialize(reader)
    End Sub
End Module

Public Class QBXML
    <XmlArray("QBXMLMsgsRs")>
    <XmlArrayItem("CustomerQueryRs")>
    Public CustomerQueryRs As List(Of CustomerQueryRs)
End Class
Public Class CustomerQueryRs
    <XmlAttribute()>
    Public requestID As Integer
    <XmlAttribute()>
    Public statusCode As Integer
    <XmlAttribute("statusSeverity")>
    Public statusSeverity As String
    <XmlAttribute("statusMessage")>
    Public statusMessage As String

    <XmlElement()>
    Public CustomerRet As List(Of CustomerRet)

End Class
Public Class CustomerRet
    Public ListID As String
    Public TimeCreated As DateTime
    Public TimeModified As DateTime
    Public EditSequence As String
    Public Name As String
    Public FullName As String
    Public IsActive As Boolean
    Public Sublevel As Integer
    Public Balance As Decimal
    Public TotalBalance As Decimal
    Public JobStatus As String
    Public PreferredDeliveryMethod As String
    Public CompanyName As String
    Public CreditLimit As Decimal

    <XmlElement("BillAddress")>
    Public BillAddress As List(Of BillAddress)

    <XmlElement("BillAddressBlock")>
    Public BillAddressBlock As List(Of BillAddress)

    Public SalesTaxCodeRef As CodeRef
    Public ParentRef As CodeRef
End Class
Public Class BillAddress
    Public Addr1 As String
End Class
Public Class CodeRef
    Public ListID As String
    Public FullName As String
End Class
Imports System.Xml
导入System.Xml.Xml
模块1
Const FILENAME=“c:\temp\test.xml”
副标题()
将读卡器设置为XmlReader=XmlReader.Create(文件名)
Dim序列化程序作为新的XmlSerializer(GetType(QBXML))
将qbxml设置为qbxml=序列化程序。反序列化(读取器)
端接头
端模块
公共类QBXML
公共CustomerQueryRs As列表(CustomerQueryRs的列表)
末级
公共类CustomerQueryRs
作为整数的公共请求ID
公共状态代码为整数
公共状态严重性为字符串
公共状态消息作为字符串
公共CustomerNet作为(CustomerNet的)列表
末级
公共类客户机
作为字符串的公共ListID
公共时间创建为日期时间
公共时间修改为日期时间
作为字符串的公共编辑序列
公共名称作为字符串
作为字符串的公共全名
公共IsActive为布尔型
作为整数的公共子级
十进制公共余额
以十进制表示的公共余额
作为字符串的PublicJobStatus
Public PreferredDeliveryMethod作为字符串
Public CompanyName作为字符串
以十进制表示的公共信用限额
公共公告栏作为列表(公告栏地址)
公共BillAddressBlock As列表(BillAddress的)
公共销售TaxCodeRef作为CodeRef
公共ParentRef作为CodeRef
末级
公共类公告栏地址
公共Addr1作为字符串
末级
公共类代码参考
作为字符串的公共ListID
作为字符串的公共全名
末级

谢谢jdweng,我终于明白了它是如何工作的。很难知道这个问题是如何得到答案的,因为问题中的许多标记都没有被背景标记所包围,因此很难找到答案。请始终使用预览窗口查看您的问题是否正确呈现。