Как заменить символ HEX в документе XML? - PullRequest
0 голосов
/ 01 июня 2010

Я пытаюсь импортировать файл xml в vb.net XmlDocument, но получаю сообщение об ошибке:

'.', Шестнадцатеричное значение 0x00, является недопустимым символом. Линия 94, позиция 1.

Мне интересно, есть ли способ заменить шестнадцатеричный символ 0x00
Ниже приведены строки 92,93,94, файл заканчивается строкой 94

92 |    </request>
93 |</rpc> <!-- XML Finishes here -->
94 |

Спасибо за любую помощь.

РЕДАКТИРОВАТЬ: добавление кода, используемого для получения файла.

Dim fs As FileStream = File.Open(FileName, FileMode.Open, FileAccess.Read)
Dim buffer(fs.Length) As Byte
fs.Read(buffer, 0, fs.Length)
Dim xmlString As String = System.Text.UTF8Encoding.UTF8.GetString(buffer)
fs.close()

Doc.LoadXml(xmlString.Trim)

Я использую System.Text.UTF8Encoding.UTF8.GetString (buffer), потому что кодировка файла не всегда UTF-8. К сожалению, у меня нет контроля над XML-файлом, поскольку мы получаем его из внешнего источника, который не изменит способ создания файла, когда он используется другими.

Что я хочу сделать, так это в основном получить файл в строку, затем либо отрубить его конец от последнего> и затем добавить свой собственный>, либо просто заменить символ HEX пустой строкой.

Ответы [ 2 ]

3 голосов
/ 01 июня 2010

Хорошо, для начала ваш код для чтения файла не работает. Обычно это работает, но вы должны никогда игнорировать возвращаемое значение из Stream.Read. Вы также должны закрыть потоки, используя оператор Using или блок Finally. К счастью, есть невероятно простой способ заменить ваш код:

Dim xmlString As String = File.ReadAllText(FileName)
Doc.LoadXml(xmlString)

С другой стороны, вы утверждаете, что кодировка не всегда UTF-8 - так почему вы всегда пытаетесь использовать UTF-8? На самом деле было бы лучше, если бы вы загрузили его как простые байты:

Dim bytes As Byte() = File.ReadAllBytes(FileName)
Using stream As MemoryStream = new MemoryStream(bytes)
    Doc.Load(stream)
End Using

или более просто:

Doc.Load(FileName)

Теперь, если вы это сделаете, вы все еще получаете ту же ошибку? Если это так, сам файл поврежден ...

0 голосов
/ 01 июня 2010

Если у вас недопустимый XML, вам придется исправить его как обычный двоичный файл, прежде чем анализировать его как XML-документ.

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