Как я добавляю тип документа к XDocument?

CAM:: PDF имеет генератор отчетов шрифта, доступный как утилита командной строки или через вызов библиотеки. При выполнении "listfont.pl file.pdf", Вы производитесь как это:

Page 1:
  Name: F1.0
    Type: TrueType
    BaseFont: NZUXSR+Impact
    Encoding: MacRomanEncoding
    Widths: yes
      Characters: 0-255
    Embedded: yes
  Name: F2.0
    Type: TrueType
    BaseFont: XSFKRA+ArialMT
    Encoding: MacRomanEncoding
    Widths: yes
      Characters: 0-255
    Embedded: yes

14
задан James Sulak 11 September 2009 в 20:33
поделиться

2 ответа

Вы можете добавить XDocumentType к существующему XDocument , но это должен быть первый добавленный элемент. Документация по этому поводу расплывчата.

Спасибо Jeroen за указание на удобный подход использования AddFirst в комментариях. Этот подход позволяет вам написать следующий код, который показывает, как добавить XDocumentType после того, как XDocument уже содержит элементы:

var doc = XDocument.Parse("<a>test</a>");
var doctype = new XDocumentType("a", "-//TEST//", "test.dtd", "");
doc.AddFirst(doctype);

В качестве альтернативы вы можете использовать Add , чтобы добавить XDocumentType к существующему XDocument , но предостережение заключается в том, что никаких других элементов не должно существовать, поскольку он должен быть первым.

XDocument xDocument = new XDocument();
XDocumentType documentType = new XDocumentType("Books", null, "Books.dtd", null);
xDocument.Add(documentType);

С другой стороны, следующее недопустимо и приведет к InvalidOperationException: "

xDocument.Add(new XElement("Books"));
xDocument.Add(documentType);  // invalid, element added before doctype
16
ответ дан 1 December 2019 в 13:21
поделиться

Просто передайте его в XDocument конструктор ( полный пример ):

XDocument doc = new XDocument(
    new XDocumentType("a", "-//TEST//", "test.dtd", ""),
    new XElement("a", "test")
);

или используйте XDocument.Add ( XDocumentType необходимо добавить перед корневым элементом):

XDocument doc = new XDocument();
doc.Add(new XDocumentType("a", "-//TEST//", "test.dtd", ""));
doc.Add(XElement.Parse("<a>test</a>"));
3
ответ дан 1 December 2019 в 13:21
поделиться
Другие вопросы по тегам:

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