Почему я получаю "Ошибка: '.', Шестнадцатеричное значение 0x00, это недопустимый символ. Строка 2, позиция 1." из утилиты xsd - PullRequest
1 голос
/ 26 апреля 2019

Я хочу иметь возможность сканировать файлы определения отчетов SSRS (.rdl) и изменять их программно. Я следую инструкции Microsoft (хотя и немного устаревшей, но не могу найти актуальную версию).

Учебное пособие здесь: https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2005/aa337455(v%3dsql.90)

Я загрузил файл схемы XML с веб-сайта Microsoft - ReportDefinition.xsd - и теперь выполняю шаги 4–6, в которых говорится, что нужно открыть командную строку Visual Studio и запустить утилиту XSD, чтобы сгенерировать файл ReportDefinition.vb, который содержит классы для схемы RDL.

Однако, когда я запускаю команду согласно инструкциям:

xsd /c /l:VB /n:SampleRDLSchema ReportDefinition.xsd

... Я просто получаю сообщение об ошибке:

Error: '.', hexadecimal value 0x00, is an invalid character. Line 2, position 1.

Это первые несколько строк файла; Я не вижу символов 0x00, к которым относится сообщение об ошибке:

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) Microsoft.  All rights reserved. -->
<xsd:schema targetNamespace="http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition" 
        xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
        xmlns="http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition"
        elementFormDefault="qualified">

  <xsd:annotation>
      <xsd:documentation>

        The following schema describes the structure of the 
      Report Definition Language (RDL) for Microsoft SQL Server 2008 R2.  

Учитывая, что это письменный набор инструкций Microsoft по использованию утилиты Microsoft, работающей с файлом, поставляемым Microsoft, я немного озадачен тем, почему в нем должна быть ошибка.

Кто-нибудь может помочь? Спасибо.

1 Ответ

0 голосов
/ 01 мая 2019

Проблема, о которой сообщается в начале строки 2, может указывать на то, что это проблема кодирования. Атрибут encoding="utf-8" в первой строке указывает, что файл должен интерпретироваться как имеющий кодировку UTF-8. Поэтому после первой строки xsd utitlity попытается прочитать файл как UTF-8. Если файл на самом деле использует другую кодировку, будет выдана ошибка, подобная той, с которой вы столкнулись.

Чтобы проверить это, удалите encoding="utf-8" из первой строки и повторите команду.

...