Очистка XML - непревзойденные теги - PullRequest
0 голосов
/ 29 ноября 2010

Я пытаюсь отформатировать имеющиеся у меня XML-записи, чтобы я мог использовать xmltextreader без ошибок. Я добавил заголовок и нижний колонтитул по умолчанию, если заметил, что нет открывающих или закрывающих тегов. Я удаляю недопустимые символы и проверяю юникод, но всегда нахожу проблему, когда запись проскальзывает и выдает ошибку: данные на корневом уровне неверны и когда я проверяю, что запись пропускается через процесс очистки или просто имеет где-то несоответствующий тег. Теперь я использую

   Dim stringSplitter() As String = {"</entry>"}
        ' split the file content based on the closing entry tag
        sampleResults = _html.Split(stringSplitter, StringSplitOptions.RemoveEmptyEntries)

чтобы разделить мой xml на отдельные записи, прежде чем я начну процесс очистки. Вот мои заголовки по умолчанию;

Private defaultheader = "xmlns=""http://www.w3.org/2005/Atom"""
    Private headerl As String = "<?xml version=""1.0"" encoding=""utf-8""?>" & vbNewLine & "<entry " & defaultNameSpace & ">"
    Private footer As String = "</entry>"

есть ли какой-либо инструмент в .net Framework, который может обнаруживать и очищать несопоставленные теги, чтобы я мог заставить это работать

1 Ответ

2 голосов
/ 30 ноября 2010

Я думаю, что вы ищете неправильное направление для решения :) Я думаю, что вам нужно, чтобы проверить IXmlSerializer.

проверить эту статью: Правильный способ реализации IXmlSerializable?

Мой подход состоит в том, чтобы создать объект ввода, сделать его сериализуемым и прочитать его через сериализатор.

Создайте еще один сериализованный объект с именем CleanedEntry и передайте ему объект ввода в конструкторе.

Если входные данные никогда не содержат ошибок, вы должны быть в состоянии сделать эту работу довольно легко.

(конечно, это немного зависит от того, как выглядит источник и что вы хотите с ним делать.) Пожалуйста, приведите пример ожидаемого ввода / вывода, если мой ответ кажется туманным, и я постараюсь уточнить его. (если у меня есть время;))

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