Как добавить сущности в коллекцию сущностей моего XML документа? - PullRequest
4 голосов
/ 19 марта 2020

Мне нужно добавить поле "! ENTITY" в мой документ, но я не могу найти правильный способ сделать это. В основном мой код в настоящее время дает следующий результат:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg/>

В то время как результат, который я хочу получить, следующий:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
    <!ENTITY ns_svg "http://www.w3.org/2000/svg">
    <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
]>
</svg>

Мой текущий код такой:

procedure TSVGContainer.SaveToFile(Filename: String);
var XMLDoc: IXMLDocument;
    DomImpl: IDOMImplementation;
    DocType : IDOMDocumentType;
begin
  XMLDoc := NewXMLDocument;
  DomImpl := GetDOM(sAdom4XmlVendor);
  XMLDoc.Encoding := 'utf-8';
  DocType := DomImpl.createDocumentType('svg', '-//W3C//DTD SVG 1.1//EN', 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd');
  XMLDoc.DOMDocument := DomImpl.createDocument('http://www.w3.org/2000/svg', 'svg', DocType);
  XMLDoc.Options := XMLDoc.Options+[doNodeAutoIndent];
  XMLDoc.SaveToFile(Filename);
end;
...