C# xml字符串值(如exponential)变为float

C# xml字符串值(如exponential)变为float,c#,xml,schema,C#,Xml,Schema,我不同意将“111e1”这样的xml值作为字符串类型读取。我正在尝试使用标准C#XmlReader从xml创建xsd模式,如下所示: ` XmlReaderSettings readerSettings = new XmlReaderSettings(); readerSettings.XmlResolver = null; using (XmlReader reader = XmlReader.Create(sourcexmlpath, readerSet

我不同意将“111e1”这样的xml值作为字符串类型读取。我正在尝试使用标准C#XmlReader从xml创建xsd模式,如下所示:

`
   XmlReaderSettings readerSettings = new XmlReaderSettings();
        readerSettings.XmlResolver = null;
        using (XmlReader reader = XmlReader.Create(sourcexmlpath, readerSettings))
        {
            XmlSchemaSet schemaSet = new XmlSchemaSet();
            XmlSchemaInference schema = new XmlSchemaInference();
            schemaSet = schema.InferSchema(reader);
            using (TextWriter writer = File.CreateText(xsdpath))
            {
                foreach (XmlSchema s in schemaSet.Schemas())
                {
                    s.Write(writer);
                }
                writer.Close();
            }
            reader.Close();
        }
`
源xml文件:

`<?xml version="1.0" encoding="utf-8"?>
    <Document>
      <example>
        <testvalue>34551E10</testvalue>
    </example>
 </Document>
`
`
34551E10
`
我得到了浮子类型:

`<?xml version="1.0" encoding="utf-8"?>
    <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
       <xs:element name="Document">
         <xs:complexType>
           <xs:sequence>
             <xs:element maxOccurs="unbounded" name="example">
               <xs:complexType>
                 <xs:sequence>
                   <xs:element name="testvalue" type="xs:float" />             
                 </xs:sequence>
              </xs:complexType>
             </xs:element>
           </xs:sequence>
         </xs:complexType>
       </xs:element>
     </xs:schema>`
`
`
如果值由数字组成,并且它们之间只有“e”字母,则存在问题(其他字母的问题消失),例如: 1E11111E1111E1 但是如果字母的开头和结尾像E111111111E,我们就没有这个问题了


如何防止将值读取为浮点类型?有可能吗?

在我看来,在不需要读取时验证XML。如果在写入时验证了XML,则在读取时无需执行架构检查。使用XML时,如果未读取完整文件,则会由于缺少结束标记而发生错误。因此,在您的情况下,如果您在没有进行模式检查的情况下读取文件,您不会遇到问题。@jdweng,但这就是全部要点吗?“我正在尝试从xml创建xsd模式”。您会问以下问题:“如何防止将值读取为浮点类型?可能吗?”我的回答是在读取c#代码时不检查模式。您正在使用:XmlSchemaSet schemaSet=new XmlSchemaSet();因此,验证应该通过的模式。然后读取不带模式的Xml作为字符串,这样浮点数就不会改变。