Вставьте тег в сериализацию XML-файла

Я сериализую XML-файл с классами, созданными автоматически с помощью специальной вставки XML. Я все сделал без проблем, более 3000 строк (а Xml файл более 600), но у меня есть тег, который я не могу сериализовать. В исходном XML-файле у меня есть это:

<sdtc:statusCode code = "active"/>

Это класс, созданный Visual Studio:

public string code
{
    get { return this.codeField; }
    set { this.codeField = value; }
}

Я сериализую это так:

statusCode oStatusCode = new statusCode();
oStatusCode.code = "active";

И это сериализованный результат:

<statusCode code = "active" />

Как видите, префикс sdtc: отсутствует и я не знаю, как его вставить.

Я попробовал с:

[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "urn:hl7-org:sdtc")]

но это не имеет никакого эффекта. Я искал несколько часов, но не смог найти решения. К сожалению, это мой первый опыт сериализации.

Есть идеи или предложения?

Обновлено: Поскольку классы сериализации имеют длину более 12 000 строк, я не думаю, что смогу их вставить, попробую вставить что-нибудь полезное, надеюсь, я не ошибаюсь. Первая строка XML-файла:

<ClinicalDocument xmlns = "urn:hl7-org:v3" xmlns:mif = "urn:hl7-org:v3/mif" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:lab = "urn:oid:1.3.6.1.4.1.19376.1.3.2" xmlns:sdtc = "urn:hl7-org:sdtc">

Первые строки кода сериализатора:

[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "urn:hl7-org:v3")]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "urn:hl7-org:v3", IsNullable = false)]

Как вы сериализуете свой тип в XML? Не могли бы вы отредактировать свой вопрос, чтобы поделиться минимально воспроизводимым примером , как указано в Как задать? Нам нужно увидеть полный (возможно, упрощенный) образец XML, который вы хотите сгенерировать, + созданные вами типы, которые следует сериализовать в требуемый XML. Спасибо!

dbc 11.04.2024 19:18

Теперь я попытался вставить дополнительную информацию, но не думаю, что вставка файла Xml с более чем 600 строками или классов с более чем 3000 строками возможна.

Paco 12.04.2024 08:49

@Пако, нам этого недостаточно, чтобы помочь тебе. Мы увидим 1) Класс, содержащий свойство code. Вы можете удалить все остальные свойства, но оставить все атрибуты XmlSerializer, примененные к классу и свойству. 2) Если этот класс не является корневым классом, то корневой класс ссылается на класс code со всеми атрибутами сериализации XML. Опять же, ненужные свойства можно удалить. 3) XML-код, который вы хотите сгенерировать для этой модели, но в настоящее время не можете.

dbc 12.04.2024 15:56

Поскольку классы сериализации имеют длину более 12 000 строк, я не думаю, что смогу их вставить: длина сообщения может достигать 30 000 символов. Это ограничение касается ответов. Я не уверен, распространяется ли ограничение на оригинальные сообщения. Тем не менее, чем длиннее ваш пост, тем меньше вероятность, что он понравится большинству людей.

user246821 12.04.2024 18:33

Я не думаю, что вставка XML-файла, содержащего более 600 строк, или классов, содержащих более 3000 строк, возможна: во многих программах код превышает 3000 строк. Хотя вам, возможно, и не захочется читать все строки, это, безусловно, возможно. Самые успешные люди в жизни — это те, кто был готов делать то, чего другие не хотели делать.

user246821 12.04.2024 18:37

URL-адрес сообщения, которое я предоставил выше, дает вам все необходимое для решения вашей проблемы. Вам следует создать минимальный воспроизводимый пример, который вы сможете использовать для тестирования, чтобы убедиться, что вы понимаете, как использовать пространства имен. Здесь также можно разместить минимальный воспроизводимый пример, если у вас возникнут трудности, чтобы другие могли использовать его для воссоздания проблемы.

user246821 12.04.2024 18:43
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
8
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это мой первый опыт работы с сериализатором, но для решения проблемы я использовал это решение, конечно неправильное и неэлегантное, но оно работает.

        string cRead = File.ReadAllText("mycda.xml");
        System.Xml.Linq.XDocument xdoc = System.Xml.Linq.XDocument.Parse(cRead);           
        string cNew = xdoc.ToString();
        cNew = cNew.Replace("<statusCode code=\"activemod\" />", "<sdtc:statusCode code=\"active\" />");

(Я использую значение activemod, чтобы отличить его от всех остальных)

Использовали ли вы для этого искусственный интеллект, например ChatGPT?

user246821 13.04.2024 18:04

Да, но это не решило мою проблему.

Paco 15.04.2024 08:10

Не понимаю почему -1, но все равно спасибо

Paco 15.04.2024 08:13

Другие вопросы по теме