【发布时间】:2015-03-26 15:27:33
【问题描述】:
--更新--
其实,再看一遍代码后,我应该重新表述一下这个问题。在下面添加了更多描述。
我有这个从 Web 服务返回的 XML 结构,据说是标准问题 cXML 结构。我的问题是重复的<Extrinsic> 节点,它有一个参数名称,除了区分它们的值之外。
像这样:
<ItemDetail>
<UnitPrice>
<Money currency="USD">1.53 </Money>
</UnitPrice>
<Description>ASPIRIN 81 MG CHW 90</Description>
<UnitOfMeasure>EA</UnitOfMeasure>
<Extrinsic name="HCustomerNumber">0100074080</Extrinsic>
<Extrinsic name="HPONumber">201</Extrinsic>
<Extrinsic name="HOrderNumber">4413686057</Extrinsic>
<Extrinsic name="HUserID">ABTGDEV</Extrinsic>
<Extrinsic name="HLegacyCustomerNumber">055150912</Extrinsic>
<Extrinsic name="LegacyItemNumber">198440</Extrinsic>
<Extrinsic name="CustomerMaterialNumber"/>
<Extrinsic name="ContractNumber"/>
<Extrinsic name="NDC">00904628889</Extrinsic>
<Extrinsic name="UPC">309046288893</Extrinsic>
<Extrinsic name="Size">90</Extrinsic>
<Extrinsic name="DrugFormPackSize">90.000</Extrinsic>
<Extrinsic name="Prevent Sub">False</Extrinsic>
<Extrinsic name="SHCCode"/>
<Extrinsic name="DEPTCode"/>
<Extrinsic name="GLCode"/>
<Extrinsic name="SWP">3.62000</Extrinsic>
<Extrinsic name="RetailPrice">0.00</Extrinsic>
<Extrinsic name="RetailPriceOverride">0.00</Extrinsic>
<Extrinsic name="TemporaryRetailPriceOverride">True</Extrinsic>
<Extrinsic name="UDIF"/>
<Extrinsic name="UDIFDesc"/>
<Extrinsic name="Formulary"/>
<Extrinsic name="SPLRouting"/>
</ItemDetail>
如何设置我的类结构以便正确反序列化?类本身由 PetaPoco 呈现,因此每个 <Extrinsic> 节点都是数据库中类/字段的属性。或者可能做不到,需要手动处理,我一直在摸索,找不到好的自动方式。
--更新--
这就是我要反序列化的类
public int syspohid { get; set; }
public int syspodid { get; set; }
public string pdvendor { get; set; }
public string pdprefix { get; set; }
public Nullable<int> pdnumber { get; set; }
public Nullable<int> pdline { get; set; }
public bool pdtaxable { get; set; }
public bool pdfreightable { get; set; }
public string comments { get; set; }
public string pdlocation { get; set; }
public string pddoctor { get; set; }
public string pdpatient { get; set; }
public string pdlotnum { get; set; }
public Nullable<System.DateTime> pdcasedate { get; set; }
public bool pduseany { get; set; }
public string pdvnitemid { get; set; }
public string pdvnuofm { get; set; }
public Nullable<int> pdvnunit { get; set; }
public string pddescript { get; set; }
public Nullable<decimal> pdvnprice { get; set; }
public Nullable<int> pdvnqty { get; set; }
public Nullable<int> pdrcvtype { get; set; }
public string pdrcvline { get; set; }
public Nullable<int> sysprdid { get; set; }
public Nullable<int> pdvnorgqty { get; set; }
public Nullable<int> sysshipid { get; set; }
public string shipid { get; set; }
public string shipdesc { get; set; }
public string pdgl { get; set; }
public Nullable<System.DateTime> pdshipdt { get; set; }
public string pdinternalid { get; set; }
public string pdmanufacid { get; set; }
public string pdndc { get; set; }
public string pdpatchargeid { get; set; }
public string pdupn { get; set; }
public string entitycode { get; set; }
public string deptcode { get; set; }
public string classcode { get; set; }
public string expencode { get; set; }
public string cadduser { get; set; }
public Nullable<System.DateTime> dadd { get; set; }
public string cedituser { get; set; }
public Nullable<System.DateTime> dedit { get; set; }
public Nullable<decimal> taxpct { get; set; }
public Nullable<int> invoiceqty { get; set; }
public string auditinfo { get; set; }
public string totenumber { get; set; }
public string export { get; set; }
public Nullable<int> scheduledDrugIndex { get; set; }
public string contractid { get; set; }
public string refnum { get; set; }
那么真正的问题就变成了,如何使用属性 name 的值来正确反序列化 xml。有没有可能?
谢谢。
【问题讨论】:
-
您可以添加当前用于反序列化的代码吗?
标签: c# .net xml serialization deserialization