Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.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片段反序列化为xsd.exe生成的类_C#_.net_Xml_Xsd_Xsd.exe - Fatal编程技术网

C# 将XML片段反序列化为xsd.exe生成的类

C# 将XML片段反序列化为xsd.exe生成的类,c#,.net,xml,xsd,xsd.exe,C#,.net,Xml,Xsd,Xsd.exe,我有一个xml文件,我想读取它,然后解释并转换为从xsd工具生成的相应类。以下是我正在尝试的步骤: 我创建了一个XSD文件 将相应的xsd文件转换为相应的类集 我通过同一组类(步骤2)和xmlserializer生成了一些xml文件 现在,我正在从这些xml文件中读取数据,我不想将其转换为类(从步骤2生成) 我正在粘贴到现在为止我一直在工作的代码,当我反序列化时,我似乎遇到了一个异常,{“XML文档(0,0)中有一个错误”。} 我正在粘贴我的xsd的一个片段: <xs:complexTyp

我有一个xml文件,我想读取它,然后解释并转换为从xsd工具生成的相应类。以下是我正在尝试的步骤:

  • 我创建了一个XSD文件
  • 将相应的xsd文件转换为相应的类集
  • 我通过同一组类(步骤2)和xmlserializer生成了一些xml文件
  • 现在,我正在从这些xml文件中读取数据,我不想将其转换为类(从步骤2生成)
  • 我正在粘贴到现在为止我一直在工作的代码,当我反序列化时,我似乎遇到了一个异常,{“XML文档(0,0)中有一个错误”。}

    我正在粘贴我的xsd的一个片段:

    <xs:complexType name="Parameters">
    <xs:all>
      <xs:element name="A">
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="mstns:Restricted8CharString">
              <xs:attribute name="Caption" use="required" fixed="Caption for A">
                <xs:simpleType>
                  <xs:restriction base="xs:string"></xs:restriction>
                </xs:simpleType>
              </xs:attribute>
              <xs:attribute name="ActionWhenMaxReached" use="required">
                <xs:simpleType>
                  <xs:restriction base="xs:short">
                    <xs:pattern value="[1-3]"></xs:pattern>
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
              <xs:attribute name="Expression" type="xs:string" default="0" />
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="B">
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:short">
              <xs:attribute name="Caption" use="prohibited">
                <xs:simpleType>
                  <xs:restriction base="xs:string"></xs:restriction>
                </xs:simpleType>
              </xs:attribute>
              <xs:attribute name="ActionWhenMaxReached" use="required">
                <xs:simpleType>
                  <xs:restriction base="xs:short">
                    <xs:pattern value="[1-3]"></xs:pattern>
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
              <xs:attribute name="Expression" type="xs:string" default="0" />
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      </xs:all>
      </xs:complexType>
    

    您的结束标记不正确。应该是:

    </xs:complexType>
    
    
    
    而不是

    </xs:complexType name="Parameters">
    

    经过努力,我找到了解决方案:

    实际上,我试图解析一个内部元素,这是不正确的;我已经有了xsd工具中的类,因此我可以简单地将代码用作:

    XmlSerializer serializer = new XmlSerializer(typeof(RootClass));
            using (TextReader reader = new StreamReader(filePath))
            {
                RootClass parameterFromFile = (RootClass)serializer.Deserialize(reader);
            }
    

    对不起,对于输入错误,这是错误的,实际的xsd是正确的。我将更新我的问题并更正此错误。
    XmlSerializer serializer = new XmlSerializer(typeof(RootClass));
            using (TextReader reader = new StreamReader(filePath))
            {
                RootClass parameterFromFile = (RootClass)serializer.Deserialize(reader);
            }