Как сериализовать c# с одним xmlns без xsi xsd?

98
06 июля 2021, 19:50

Нужен файл, вида

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Types 
 xmlns="http://schemas.openxmlformats.org/package/2006/content-types">
 <Default Extension="xml" ContentType="application/xml"/>    

NET вставляет свои xmlns:xsi=http://www.w3.ord/2001/XLMSchema-instance и xmlns:xsd

Пишу

using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Serialization;
public class xlsx
{
    const string ns1 = "http://schemas.openxmlformats.org.spreadsheetml/2006/main";
       static XmlSerializerNamespaces _ns = new System.Xml.Serialization.XmlSerializerNamespaces(
                new XmlQualifiedName[] { 
       new XmlQualifiedName("","http://schemas.openxmlformats.org.spreadsheetml/2006/main"), 
     new XmlQualifiedName("r","http://schemas.openxmlformats.org.spreadsheetml/2006/main2") 
                  });

    [XmlRoot(ElementName="Types", Namespace="ns3")]
    //[XmlSchemaProvider("Qualited")]
    public class Types : IXmlSerializable  {
        public XmlQualifiedName Qualited() {
            return new XmlQualifiedName("", "");
          }

        [XmlNamespaceDeclarations]
        public static XmlSerializerNamespaces Namespaces { get { return xlsx._ns; } }

        [Serializable]
        public struct Override {
            public string PartName;
            public string ContentType;
           }
        [Serializable]
        public struct Default
        {
            public string Extension;
            public string ContentType;
        }


        [XmlElement(Type= typeof(Default), ElementName = "Default")]
        public List<object> data = new List<object>();

        public void Add(object o) {
            if (o is string) {
                Default d = new Default();
                d.ContentType=((d.Extension = o + "")== "xml") ? "application/xml" : "application/vnd.openxmlformats-package.relationships+xml";
                data.Add(d);
              }
          }
       }
    public static void Main() {
        Types t = new Types();
        t.Add("xml");
        t.Add("rels");
       XmlSerializer ser = new XmlSerializer(typeof(Types));
      ser.Serialize(Console.OpenStandardOutput(), t);
 //        ser.Serialize(Console.OpenStandardOutput(), t,_ns); 

}

Всёравно с# делает свои стандартные xsi xsd. Если делаю как советуют через namespace Serialize(stm,obj,ns) то на выходе у меня вид <q1:Types и т д, что не подходит. Как убрать xsi xsd?

Реплейсить - нет.

Через IXmlSerializable - пробовал, так там метод ReadXml пустой - и получается почти то что надо, без внутренностей... тоже не вариант...

READ ALSO
Считывание строк .txt

Считывание строк .txt

Мне нужен код, который бы считал строки в текстовом документе, а потом выводил в label (Не знаю, какие еще есть варианты для вывода, новичок) (В текстовом...

78
Как правильно свзяать локальный узел (Tcp/Udp)Client&#39;a для принятия входящих данных?

Как правильно свзяать локальный узел (Tcp/Udp)Client'a для принятия входящих данных?

Когда я инициализирую TcpClient с указанием в конструкторе IPAddress отличного от 00

144
Последовательное использование lock()

Последовательное использование lock()

В моем случае нужно, чтоб процедуры P1,P2,P3 могли пересекаться между собой

100
Не получается обнулить текст в Input Field в Unity на C#

Не получается обнулить текст в Input Field в Unity на C#

У меня есть Input Field для ввода названия проекта, мне нужно, чтобы текст в нем обнулялся по нажатию на кнопку "Отмена"Подскажите, пожалуйста, решение...

94