169 похожих чатов

Раз пошла тема про XML... Delphi XE 10.4.2(но это не важно),

XML Data Binding
Несколько XSD.
В основном содержатся include на расширения.
Несколько Namespace, это важно.

Биндинги кривые - узлы без NS.

Кто-нибудь сталкивался? Решали?

Писать руками в строку или на уровне узлов не хочу.

SO предлагают раскрыть Include по месту в одном файле и перегенерировать биндинги или построить XSD по XML.
https://stackoverflow.com/questions/29507797/ixmlnode-set-prefix-and-namespace

Другой вариант - патчить
https://stackoverflow.com/questions/3989012/how-do-i-add-a-namespace-prefix-to-each-node-using-txmldocument
Но он расставляет NS даже для defaultNaespace, что не нужно.

Пока решил явным декларированием, но это криво, тк id NS это переменная, а не константа.
Для записи/генерации потянет, а для чтения - потенциальный косяк.

function NewDocInfo: IXMLDocumentInfoTtype;
begin
Result := NewXMLDocument.GetDocBinding('DocInfo', TXMLDocumentInfoTtype, TargetNamespace) as IXMLDocumentInfoTtype;
Result.DeclareNamespace('ext2016', Ext2016Namespace);
end;

function TXMLDocumentTtype.Get_EDocument: Integer;
begin
Result := ChildNodes['ext2016:EDocument'].NodeValue;
end;

procedure TXMLDocumentTtype.Set_EDocument(Value: Integer);
begin
ChildNodes['ext2016:EDocument'].NodeValue := Value;
end;
// но это ж криво.

//RegisterChildNode('EDocument', TXMLEDocumentNode, Ext2016Namespace); не сработало.

4 ответов

65 просмотров

я пробовал, менял потом тип мосле мастера создания. но если меняется название префикса, опять всё ломается... в итоге тупо бегал по нодам с их префиксами(они автоматом подставятся если дока вообще проходить проверку xml)

Решали. Класс был какой то свой - расширяющий или исправляющий работу с namespace, который подключали и по моему биндинг ручками таки надо было править. Делали это на d2006.

Жека Жека
Решали. Класс был какой то свой - расширяющий или ...

в шарпе такое решил, но вот в дельфи переделать префикс при создании это целая куча движения. в итоге плюнул и делал заполнение структуры при чтении отдельно через беготню по нодам с их префиксами.. если не сложно мне то же киньте решение этого вопроса.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта