Я пытаюсь обработать xml, перед этим мне нужно удалить объявление doctype и entity из входного xml.
Я использую приведенный ниже код для удаления типа документа и сущности:
fileContent = fileContent.replaceAll("<!ENTITY ((.|\n|\r)*?)\">", "");
fileContent = fileContent.replaceAll("<!DOCTYPE((.|\n|\r)*?)>", "");
Это удаляет сущность и затем тип документа.
Это прекрасно работает, если xml содержит ниже объявления doctype в xml:
<!DOCTYPE ichicsr SYSTEM "http://www.w3.org/TR/html4/frameset.dtd">
<!DOCTYPE ichicsr SYSTEM "D:\UPGRADE\NTServices\Server\\Xml21.dtd"
[<!ENTITY % entitydoc SYSTEM "D:\UPGRADE\NTServices\Server\\latin-entities.dtd"> %entitydoc;]>
Но если у меня есть тип документа, как указано ниже, он не будет работать, и корневой тег в xml будет удален:
<!DOCTYPE ichicsr SYSTEM "D:\UPGRADE\NTServices\Server\\Xml21.dtd"
[<!ENTITY % entitydoc SYSTEM 'D:\UPGRADE\NTServices\Server\\Xml21.dtd'>
]>
Пожалуйста, дайте мне знать, если регулярное выражение, которое я использую, является неправильным или необходимо предпринять какие-либо другие действия.