Как разобрать и найти узел, в котором недопустимые символы присутствуют в XML? - PullRequest
1 голос
/ 02 мая 2011

У меня есть XML с некоторыми недопустимыми символами в узле, такими как 11 (U + 000) или символ вертикальной табуляции. когда я пытаюсь вставить этот XML в оракул, я получаю исключение, как ORA-31011: сбой синтаксического анализа XML ORA-19202: ошибка при обработке XML LPX-00217: недопустимый символ 11 (U + 000

Следовательно, мне нужно проанализировать xml и определить, какой узел содержит этот недопустимый символ, и обернуть его внутри раздела cdata. Пожалуйста, помогите мне в решении этой проблемы.

Ответы [ 2 ]

0 голосов
/ 20 февраля 2018

У вас есть возможность использовать какой-либо язык программирования, прежде чем вставлять данные XML в Oracle?Вы можете проверить, что все символы действительны для XML, используя XmlConvert.IsXmlChar Method

C # sample:

public static bool CheckValidXmlChars(string content)
{
   return content.All(ch => System.Xml.XmlConvert.IsXmlChar(ch));
}

.Net Fiddle - https://dotnetfiddle.net/v1TNus

0 голосов
/ 08 августа 2015

Если вы можете манипулировать XML в файле, такой редактор, как vi, может быть очень полезен для поиска и удаления встроенных управляющих символов. Я только что обработал 200-мегабайтный XML-файл, экспортированный из mySQL, который содержал четыре встроенных символа Ctrl-K (U + 000B). Редактирование файла с помощью vi и использование :%s/^K//g позволило мне быстро удалить их и двигаться вперед. (Примечание: если вы не привыкли использовать vi, ^ K в приведенной выше команде был получен нажатием Ctrl-V, а затем Ctrl-K. Не просто введите carat (^), а затем K - это не сработает. ) А если вы работаете в Windows (как и я), Cygwin - очень удобный набор утилит, который включает в себя vi.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...