我有一个 xml 文件,我想读取它,然后解释并转换为从 xsd 工具生成的各个类。以下是我正在尝试的步骤:
- 我创建了一个 XSD 文件。
- 将相应的 xsd 文件转换为相应的类集。
- 我通过同一组类(从步骤 2 开始)和 xmlserializer 制作了一些 xml 文件。
- 现在我正在从那些 xml 文件中读取,我不想将它转换为类(从第 2 步生成)
我正在粘贴到目前为止工作的代码,在反序列化时似乎出现异常,{“XML 文档中存在错误 (0, 0)。”}
var doc = XDocument.Load(filePath);
var query2 = from b in doc.Root.Descendants()
select b;
foreach (var item in query2)
{
switch (item.Name.LocalName)
{
case "SomeStringValue":
XmlSerializer srz = new XmlSerializer(typeof(SomeClassGeneratedfromXSD));
var writer=item.CreateReader();
parameterFromFile.SomeProperty = (SomeClassGeneratedfromXSD)srz.Deserialize(writer);
//srz.Deserialize(item);
break;
我正在粘贴我的 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>