Когда вы анализируете XML-документ с помощью XDocument
с DTD, тогда пустое значение Internal Subset
означает, что квадратные скобки []
автоматически вставляются.
Если вы хотите удалить это Internal Subset
, вы можете установить XDocumentType.InternalSubset = null
как
XDocument doc = XDocument.Load(@"Path to xml file");
if (doc.DocumentType != null)
doc.DocumentType.InternalSubset = null;
//Do code with XDocument
Пример:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE book [ <!ENTITY h "hardcover"> ]>
<book genre="novel" ISBN="1-861001-57-5">
<title>Pride And Prejudice</title>
<author>Mark Henry</author>
</book>
В приведенном выше примере любезно заметил эту часть [ <!ENTITY h "hardcover"> ]
. Это называется внутренним подмножеством.
Имеет ли это значение?
Нет, это не имеет значения. но это правильно сформированный XML, если ваш XML не содержит никакого внутреннего подмножества, он представляется в виде квадратных скобок []
. это означает, что ваш xml не содержит никакого внутреннего подмножества.
При синтаксическом анализе xml с XDocument без внутреннего подмножества XDocument добавляет пустые квадратные скобки []
вместо отображения ничего в DOCTYPE.
Что делает пустое внутреннее подмножество?
Основная цель внутренней сущности состоит в том, чтобы снова и снова избавляться от ввода одного и того же содержимого (например, названия организации). И вместо этого мы можем определить внутреннюю сущность для содержания текста, и тогда только вам нужно использовать сущность, в которую вы хотите вставить текст. Поскольку сущность расширяется синтаксическим анализатором, вы можете быть уверены, что вы получите один и тот же текст в любом месте. Парсер также поймает, если вы неправильно написали имя сущности.
Подробнее о Internal Subset можно прочитать здесь