У меня проблема с чтением значения xml, например '111e1', в качестве строкового типа. Я пытаюсь создать схему xsd из xml, как показано ниже, используя стандартный C # XmlReader:
`
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>
`
И я получил тип поплавка:
`<?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' между ними (проблема исчезает для других букв), например:
1е111, 11е11, 111е1
но у нас не будет этой проблемы, если буква в начале и конце, как e11111, 11111e.
Как я могу предотвратить чтение значения как тип с плавающей точкой? Возможно ли это?