Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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
C#XML反序列化程序无法反序列化子节点_C#_Xml_Hipaa - Fatal编程技术网

C#XML反序列化程序无法反序列化子节点

C#XML反序列化程序无法反序列化子节点,c#,xml,hipaa,C#,Xml,Hipaa,我有一个XSD和一个由XSD.EXE生成的类,我用它来反序列化XML文档。出于某种原因,深入XML文档的节点无法进行反序列化,我不知道为什么会这样做 以下是我反序列化的方式: XmlSchema schema = XmlSchema.Read(XmlReader.Create("X12_00401_271.xsd"), null); XmlSerializer _xSerializer = new XmlSerializer(typeof(X12_00401_271)); using (XmlR

我有一个XSD和一个由XSD.EXE生成的类,我用它来反序列化XML文档。出于某种原因,深入XML文档的节点无法进行反序列化,我不知道为什么会这样做

以下是我反序列化的方式:

XmlSchema schema = XmlSchema.Read(XmlReader.Create("X12_00401_271.xsd"), null);
XmlSerializer _xSerializer = new XmlSerializer(typeof(X12_00401_271));
using (XmlReader _xReader = XmlReader.Create(path))
{
  _xResponse = _xSerializer.Deserialize(_xReader) as X12_00401_271;
}
XSD的相关部分如下所示:

<xs:element name="TS271A1_2110C_Loop">
<xs:annotation>
  <xs:appinfo>
    <b:recordInfo structure="delimited" delimiter_type="inherit_record" 
    field_order="infix" count_ignore="yes" child_delimiter="default" 
    trigger_field="EB_SubscriberEligibilityOrBenefitInformation_TS271A1_2110C/EB01__EligibilityOrBenefitInformation" 
    trigger_value="1 2 3 4 5 6 7 8 A B C D E F G H I J K L M N O P Q R S T U V W X Y MC CB" 
    notes="Subscriber Eligibility or Benefit Information" />
  </xs:appinfo>
</xs:annotation>
<xs:complexType>
  <xs:sequence>
    <xs:element minOccurs="1" maxOccurs="1" ref="EB_SubscriberEligibilityOrBenefitInformation_TS271A1_2110C" />
    <xs:element minOccurs="0" maxOccurs="9" ref="HSD_HealthCareServicesDelivery_TS271A1_2110C" />
    <xs:element minOccurs="0" maxOccurs="9" ref="REF_SubscriberAdditionalIdentification_TS271A1_2110C" />
    <xs:element minOccurs="0" maxOccurs="20" ref="DTP_SubscriberEligibilityBenefitDate_TS271A1_2110C" />
    <xs:element minOccurs="0" maxOccurs="9" ref="AAA_SubscriberRequestValidation_TS271A1_2110C" />
    <xs:element minOccurs="0" maxOccurs="10" ref="MSG_MessageText_TS271A1_2110C" />
    <xs:element minOccurs="0" maxOccurs="10" ref="TS271A1_2115C_Loop" />
    <xs:element minOccurs="0" name="LSLoop_2110C">
      <xs:complexType>
        <xs:sequence>
          <xs:element minOccurs="1" maxOccurs="1" ref="LS_Header_TS271A1_2110C" />
          <xs:element minOccurs="0" maxOccurs="1" ref="TS271A1_2120C_Loop" />
          <xs:element minOccurs="1" maxOccurs="1" ref="LE_Trailer_TS271A1_2110C" />
        </xs:sequence>
      </xs:complexType>
    </xs:element>
  </xs:sequence>
</xs:complexType>
[System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute(“代码”)] [System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true,命名空间=”http://schemas.microsoft.com/BizTalk/EDI/X12/2006")] [System.Xml.Serialization.XmlRootAttribute(命名空间=”http://schemas.microsoft.com/BizTalk/EDI/X12/2006“,IsNullable=false)] 公共部分类TS271A1_2110C_环路{

private EB_SubscriberEligibilityOrBenefitInformation_TS271A1_2110C eB_SubscriberEligibilityOrBenefitInformation_TS271A1_2110CField;

private HSD_HealthCareServicesDelivery_TS271A1_2110C[] hSD_HealthCareServicesDelivery_TS271A1_2110CField;

private REF_SubscriberAdditionalIdentification_TS271A1_2110C[] rEF_SubscriberAdditionalIdentification_TS271A1_2110CField;

private DTP_SubscriberEligibilityBenefitDate_TS271A1_2110C[] dTP_SubscriberEligibilityBenefitDate_TS271A1_2110CField;

private AAA_SubscriberRequestValidation_TS271A1_2110C[] aAA_SubscriberRequestValidation_TS271A1_2110CField;

private MSG_MessageText_TS271A1_2110C[] mSG_MessageText_TS271A1_2110CField;

private TS271A1_2115C_Loop[] tS271A1_2115C_LoopField;

private TS271A1_2110C_LoopLSLoop lSLoopField;

/// <remarks/>
public EB_SubscriberEligibilityOrBenefitInformation_TS271A1_2110C EB_SubscriberEligibilityOrBenefitInformation_TS271A1_2110C {
    get {
        return this.eB_SubscriberEligibilityOrBenefitInformation_TS271A1_2110CField;
    }
    set {
        this.eB_SubscriberEligibilityOrBenefitInformation_TS271A1_2110CField = value;
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("HSD_HealthCareServicesDelivery_TS271A1_2110C")]
public HSD_HealthCareServicesDelivery_TS271A1_2110C[] HSD_HealthCareServicesDelivery_TS271A1_2110C {
    get {
        return this.hSD_HealthCareServicesDelivery_TS271A1_2110CField;
    }
    set {
        this.hSD_HealthCareServicesDelivery_TS271A1_2110CField = value;
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("REF_SubscriberAdditionalIdentification_TS271A1_2110C")]
public REF_SubscriberAdditionalIdentification_TS271A1_2110C[] REF_SubscriberAdditionalIdentification_TS271A1_2110C {
    get {
        return this.rEF_SubscriberAdditionalIdentification_TS271A1_2110CField;
    }
    set {
        this.rEF_SubscriberAdditionalIdentification_TS271A1_2110CField = value;
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("DTP_SubscriberEligibilityBenefitDate_TS271A1_2110C")]
public DTP_SubscriberEligibilityBenefitDate_TS271A1_2110C[] DTP_SubscriberEligibilityBenefitDate_TS271A1_2110C {
    get {
        return this.dTP_SubscriberEligibilityBenefitDate_TS271A1_2110CField;
    }
    set {
        this.dTP_SubscriberEligibilityBenefitDate_TS271A1_2110CField = value;
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("AAA_SubscriberRequestValidation_TS271A1_2110C")]
public AAA_SubscriberRequestValidation_TS271A1_2110C[] AAA_SubscriberRequestValidation_TS271A1_2110C {
    get {
        return this.aAA_SubscriberRequestValidation_TS271A1_2110CField;
    }
    set {
        this.aAA_SubscriberRequestValidation_TS271A1_2110CField = value;
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("MSG_MessageText_TS271A1_2110C")]
public MSG_MessageText_TS271A1_2110C[] MSG_MessageText_TS271A1_2110C {
    get {
        return this.mSG_MessageText_TS271A1_2110CField;
    }
    set {
        this.mSG_MessageText_TS271A1_2110CField = value;
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("TS271A1_2115C_Loop")]
public TS271A1_2115C_Loop[] TS271A1_2115C_Loop {
    get {
        return this.tS271A1_2115C_LoopField;
    }
    set {
        this.tS271A1_2115C_LoopField = value;
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public TS271A1_2110C_LoopLSLoop LSLoop {
    get {
        return this.lSLoopField;
    }
    set {
        this.lSLoopField = value;
    }
}
private EB_subscribeligility或benefit information_TS271A1_2110C EB_subscribeligility或benefit information_TS271A1_2110;字段;
私人HSD_HealthCareServicesDelivery_TS271A1_2110C[]HSD_HealthcareServices Delivery_TS271A1_2110;字段;
专用REF_SubscriberAdditionalIdentification_TS271A1_2110C[]REF_SubscriberAdditionalIdentification_TS271A1_2110; u字段;
私人DTP_SubscriberEligibilityBenefitDate_TS271A1_2110C[]DTP_SubscriberEligilityBenefitDate_TS271A1_2110;字段;
私有AAA_SubscriberRequestValidation_TS271A1_2110C[]AAA_SubscriberRequestValidation_TS271A1_2110; 2110C字段;
私有消息文本TS271A1\U 2110C[]消息文本TS271A1\U 2110C字段;
专用TS271A1_2115C_循环[]TS271A1_2115C_循环字段;
专用TS271A1_2110C_looplsloopfield;
/// 
公共电子商务用户订阅权限或收益信息\u TS271A1\u 2110C电子商务用户订阅权限或收益信息\u TS271A1\u 2110C{
得到{
返回此.eB_SubscriberEligibilityOrBenefitInformation_TS271A1_2110;字段;
}
设置{
this.eB_SubscriberEligibilityOrBenefitInformation_TS271A1_2110;字段=值;
}
}
/// 
[System.Xml.Serialization.XmlElementAttribute(“HSD_HealthCareServicesDelivery_TS271A1_2110C”)]
公共HSD_医疗服务交付TS271A1_2110C[]HSD_医疗服务交付TS271A1_2110C{
得到{
返回此.hSD_HealthCareServicesDelivery_TS271A1_2110;字段;
}
设置{
this.hSD_HealthCareServicesDelivery_TS271A1_2110;字段=值;
}
}
/// 
[System.Xml.Serialization.xmlementAttribute(“REF_SubscriberAdditionalIdentification_TS271A1_2110C”)]
公共参考号订阅附加标识号TS271A1\U 2110C[]参考号订阅附加标识号TS271A1\U 2110C{
得到{
返回此.rEF_SubscriberAdditionalIdentification_TS271A1_2110;字段;
}
设置{
this.rEF_SubscriberAdditionalIdentification_TS271A1_2110;字段=值;
}
}
/// 
[System.Xml.Serialization.XmlElementAttribute(“DTP\U SubscriberEligibilityBenefitDate\U TS271A1\U 2110C”)]
公共DTP\U认购许可收益日期\U TS271A1\U 2110C[]DTP\U认购许可收益日期\U TS271A1\U 2110C{
得到{
返回此.dTP_SubscriberEligibilityBenefitDate_TS271A1_2110;字段;
}
设置{
this.dTP_SubscriberEligibilityBenefitDate_TS271A1_2110;字段=值;
}
}
/// 
[System.Xml.Serialization.XmlElementAttribute(“AAA_SubscriberRequestValidation_TS271A1_2110C”)]
公共AAA_SubscriberRequestValidation_TS271A1_2110C[]AAA_SubscriberRequestValidation_TS271A1_2110C{
得到{
返回此.aAA_SubscriberRequestValidation_TS271A1_2110;字段;
}
设置{
this.aAA_SubscriberRequestValidation_TS271A1_2110;字段=值;
}
}
/// 
[System.Xml.Serialization.xmlementAttribute(“MSG_MessageText_TS271A1_2110C”)]
公共信息文本信息TS271A1\U 2110C[]信息文本信息文本信息TS271A1\U 2110C{
得到{
返回此.mSG_MessageText_TS271A1_2110;字段;
}
设置{
this.mSG_MessageText_TS271A1_2110field=值;
}
}
/// 
[System.Xml.Serialization.xmlementAttribute(“TS271A1_2115C_循环”)]
公共TS271A1_2115C_环路[]TS271A1_2115C_环路{
得到{
返回此.tS271A1_2115C_循环字段;
}
设置{
this.tS271A1_2115C_LoopField=值;
}
}
/// 
[System.Xml.Serialization.xmlementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
公共TS271A1_2110C_环路{
得到{
返回此.lSLoopField;
}
设置{
this.lSLoopField=值;
}
}
}

对于熟悉该标准的人来说,这是一个专门的HIPAA271,我无法反序列化2120C循环。对你们其他人来说,我认为这与具体问题无关


我已经验证了我需要的节点存在于XSD和我正在解析的实际XML文件中。有没有关于下一步该去哪里的建议?

我也遇到过这个问题。在我看来,XmlSerializer不支持子节点上的名称空间。您必须显式地将其名称空间设置为“”(使用xmlns=”“或类似的名称空间)。

当您说反序列化失败时,是否出现某种异常,或者反序列化完成时对象是否为空?另外,源XML是如何生成的?能否将链接(或)文本粘贴到xsd和为ChildNode4(正确反序列化的最后一个节点)生成的类中?@Toby:反序列化完成后,对象为null。我使用了XSD.EXE@Grzenio:这是一个很长的XSD块,我将尝试添加相关的代码片段。对不起,我不是说代码是如何生成的。您试图反序列化的XML文档/消息是手写的、由您的代码生成的,还是来自另一个系统(内部或B2B)?@Toby:Ah。它来自第三方。不过,我已经验证了它的正确性。这是最好的答案,如果你明确说明了你的意思,它会有所帮助,但它起到了作用,谢谢老兄。
<xs:element name="TS271A1_2120C_Loop">
<xs:annotation>
  <xs:appinfo>
    <b:recordInfo structure="delimited" delimiter_type="inherit_record" field_order="infix" 
     count_ignore="yes" child_delimiter="default" 
     trigger_field="NM1_SubscriberBenefitRelatedEntityName_TS271A1_2120C/NM101__EntityIdentifierCode" trigger_value="13 1P 2B 36 73 FA GP IL LR P3 P4 P5 PR SEP TTP VN X3 PRP" 
     notes="Subscriber Benefit Related Entity Name" />
  </xs:appinfo>
</xs:annotation>
<xs:complexType>
  <xs:sequence>
    <xs:element minOccurs="1" maxOccurs="1" ref="NM1_SubscriberBenefitRelatedEntityName_TS271A1_2120C" />
    <xs:element minOccurs="0" maxOccurs="1" ref="N3_SubscriberBenefitRelatedEntityAddress_TS271A1_2120C" />
    <xs:element minOccurs="0" maxOccurs="1" ref="N4_SubscriberBenefitRelatedCityStateZIPCode_TS271A1_2120C" />
    <xs:element minOccurs="0" maxOccurs="3" ref="PER_SubscriberBenefitRelatedEntityContactInformation_TS271A1_2120C" />
    <xs:element minOccurs="0" maxOccurs="1" ref="PRV_SubscriberBenefitRelatedProviderInformation_TS271A1_2120C" />
  </xs:sequence>
</xs:complexType>
<xs:element name="LE_Trailer_TS271A1_2110C">
<xs:annotation>
  <xs:appinfo>
    <b:recordInfo tag_name="LE_Trailer_TS271A1_2110C" structure="delimited" 
     delimiter_type="inherit_field" field_order="prefix" count_ignore="no" 
     child_delimiter="default" notes="Loop Trailer" />
  </xs:appinfo>
</xs:annotation>
<xs:complexType>
  <xs:sequence>
    <xs:element name="LE01__LoopIdentifierCode">
      <xs:annotation>
        <xs:appinfo>
          <b:fieldInfo edi_datatype="AN" justification="left">
          </b:fieldInfo>
        </xs:appinfo>
      </xs:annotation>
      <xs:simpleType>
        <xs:restriction base="X12_AN">
          <xs:minLength value="1" />
          <xs:maxLength value="6" />
        </xs:restriction>
      </xs:simpleType>
    </xs:element>
  </xs:sequence>
</xs:complexType>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
private EB_SubscriberEligibilityOrBenefitInformation_TS271A1_2110C eB_SubscriberEligibilityOrBenefitInformation_TS271A1_2110CField;

private HSD_HealthCareServicesDelivery_TS271A1_2110C[] hSD_HealthCareServicesDelivery_TS271A1_2110CField;

private REF_SubscriberAdditionalIdentification_TS271A1_2110C[] rEF_SubscriberAdditionalIdentification_TS271A1_2110CField;

private DTP_SubscriberEligibilityBenefitDate_TS271A1_2110C[] dTP_SubscriberEligibilityBenefitDate_TS271A1_2110CField;

private AAA_SubscriberRequestValidation_TS271A1_2110C[] aAA_SubscriberRequestValidation_TS271A1_2110CField;

private MSG_MessageText_TS271A1_2110C[] mSG_MessageText_TS271A1_2110CField;

private TS271A1_2115C_Loop[] tS271A1_2115C_LoopField;

private TS271A1_2110C_LoopLSLoop lSLoopField;

/// <remarks/>
public EB_SubscriberEligibilityOrBenefitInformation_TS271A1_2110C EB_SubscriberEligibilityOrBenefitInformation_TS271A1_2110C {
    get {
        return this.eB_SubscriberEligibilityOrBenefitInformation_TS271A1_2110CField;
    }
    set {
        this.eB_SubscriberEligibilityOrBenefitInformation_TS271A1_2110CField = value;
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("HSD_HealthCareServicesDelivery_TS271A1_2110C")]
public HSD_HealthCareServicesDelivery_TS271A1_2110C[] HSD_HealthCareServicesDelivery_TS271A1_2110C {
    get {
        return this.hSD_HealthCareServicesDelivery_TS271A1_2110CField;
    }
    set {
        this.hSD_HealthCareServicesDelivery_TS271A1_2110CField = value;
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("REF_SubscriberAdditionalIdentification_TS271A1_2110C")]
public REF_SubscriberAdditionalIdentification_TS271A1_2110C[] REF_SubscriberAdditionalIdentification_TS271A1_2110C {
    get {
        return this.rEF_SubscriberAdditionalIdentification_TS271A1_2110CField;
    }
    set {
        this.rEF_SubscriberAdditionalIdentification_TS271A1_2110CField = value;
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("DTP_SubscriberEligibilityBenefitDate_TS271A1_2110C")]
public DTP_SubscriberEligibilityBenefitDate_TS271A1_2110C[] DTP_SubscriberEligibilityBenefitDate_TS271A1_2110C {
    get {
        return this.dTP_SubscriberEligibilityBenefitDate_TS271A1_2110CField;
    }
    set {
        this.dTP_SubscriberEligibilityBenefitDate_TS271A1_2110CField = value;
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("AAA_SubscriberRequestValidation_TS271A1_2110C")]
public AAA_SubscriberRequestValidation_TS271A1_2110C[] AAA_SubscriberRequestValidation_TS271A1_2110C {
    get {
        return this.aAA_SubscriberRequestValidation_TS271A1_2110CField;
    }
    set {
        this.aAA_SubscriberRequestValidation_TS271A1_2110CField = value;
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("MSG_MessageText_TS271A1_2110C")]
public MSG_MessageText_TS271A1_2110C[] MSG_MessageText_TS271A1_2110C {
    get {
        return this.mSG_MessageText_TS271A1_2110CField;
    }
    set {
        this.mSG_MessageText_TS271A1_2110CField = value;
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute("TS271A1_2115C_Loop")]
public TS271A1_2115C_Loop[] TS271A1_2115C_Loop {
    get {
        return this.tS271A1_2115C_LoopField;
    }
    set {
        this.tS271A1_2115C_LoopField = value;
    }
}

/// <remarks/>
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
public TS271A1_2110C_LoopLSLoop LSLoop {
    get {
        return this.lSLoopField;
    }
    set {
        this.lSLoopField = value;
    }
}