Tworzenie XML na bazie XSD

0

Dzień dobry.
Przy użyciu xsd.exe udało mi się utworzyć klasę na podstawie plików schematu. Klasę wypełniam danymi i generuję XML w następujący sposób :

        public static string  testtofile<T>(this T toSerialize)
        {
            XmlSchemaSet schema = new XmlSchemaSet();
            schema.Add(@"http://www.mf.gov.pl/schematy/EDD/TraderToEDD/2021/11/", @"SchematyXML\traderToEdd.xsd");
            XmlSerializer ser = new XmlSerializer(toSerialize.GetType(), @"http://www.mf.gov.pl/schematy/EDD/TraderToEDD/2021/11/");
            XmlDocument xd = new XmlDocument();

            using (MemoryStream memStm = new MemoryStream())
            {
                ser.Serialize(memStm, toSerialize);
                memStm.Position = 0;
                XmlReaderSettings settings = new XmlReaderSettings();
                
                settings.IgnoreWhitespace = true;
                settings.Schemas = schema;
                
                using (var xtr = XmlReader.Create(memStm, settings))
                {
                    xd.Schemas = schema;
                    xd.Load(xtr);
                    xd.Save(@"D:\lala.xml"); 
                    return xd.OuterXml;
                }
            }
        }

Plik niby wychodzi jednak nie jest on formatowany zgonie ze schematem dla przykładu :

<q4:Quantity>2000.0000</q4:Quantity>

Natomiast schemat mówi :

  <xs:simpleType name="QuantityType">
    <xs:annotation>
      <xs:documentation>
        <doc:description value="Quantity" />
      </xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:decimal">
      <xs:totalDigits value="15" />
      <xs:fractionDigits value="3" />
      <xs:minExclusive value="0" />
      <xs:pattern value="[1-9]\d{0,14}" />
      <xs:pattern value="([1-9]\d{0,13}|0)\.[0-9]" />
      <xs:pattern value="([1-9]\d{0,12}|0)\.\d[0-9]" />
      <xs:pattern value="([1-9]\d{0,11}|0)\.\d\d[0-9]" />
    </xs:restriction>
  </xs:simpleType>

Nie bardzo mam już pomysł jak to naprawić więc jeśli ktoś jest w stanie zasugerować cokolwiek to będę wdzięczny za każdą pomoc.
Jeśli ktoś chciał by się podjąć poprawy tego bałaganu komercyjnie to również jestem otwarty na propozycję współpracy.

0

Dzień dobry.
Temat już nieaktualny.
Nie wiem czy robiłem coś źle z tym xsd.exe czy nie tak podłączałem schematy w momencie serializacji w każdym razie nie chciało działać w żaden sposób.
Rozwiązaniem okazało się użycie xsd2code++ strona projektu dla zainteresowanych : https://www.xsd2code.com/
Co prawda jest to rozwiązanie komercyjne i płatne ale generuje kod jak należy i warto wydać na to parę dolarów.
Z tego co widziałem w przypadku decimal generuje dodatkowe znaczniki [FractionDigitsAttribute(3)] zgodne z tym co jest w schemacie. Być może dz się to zrobić inaczej prawidłowo podpinając namespace z plików xsd przy generacji ale czy na pewno to nie mam do tej pory pojęcia.

1 użytkowników online, w tym zalogowanych: 0, gości: 1