为什么会出现“错误:'。',十六进制值0x00,是无效字符。第2行,位置1。”来自xsd实用程序

时间:2019-04-26 15:47:15

标签: visual-studio reporting-services xml-parsing

我希望能够扫描SSRS报告定义(.rdl)文件并以编程方式对其进行更改。我正在关注Microsoft教程(尽管有些过时,但找不到最新版本)。

该教程在这里:https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2005/aa337455(v%3dsql.90)

我已经从Microsoft网站ReportDefinition.xsd下载了XML架构文件,现在正在按照步骤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实用工具,我对为什么其中应该有一个错误感到困惑。

有人可以帮忙吗?谢谢。

2 个答案:

答案 0 :(得分:0)

第2行开头报告的问题可能表明这是一个编码问题。第一行的属性function(req, res, next) { console.log(req) }); 表示文件应解释为具有UTF-8编码。因此,在第一行之后,xsd实用程序将尝试将文件读取为UTF-8。如果文件实际上使用了不同的编码,则将产生与您遇到的错误类似的错误。

要对此进行测试,请从第一行中删除encoding="utf-8",然后再次运行命令。

答案 1 :(得分:0)

对我来说,这是另一个问题。我的文件包含以下内容:

<xs:include schemaLocation="XMLFILE.xsd"/>

因此错误的含义是“找不到XMLFILE.xsd”。确保所有文件中都包含所有相关的xml文件。右键单击Visual Studio中的文件并执行“查看代码(F7)”,就可以知道它。如果包含的内容用红色下划线标记,则表示文件丢失或“ XMLFile.xsd”中的内容丢失。

请Microsoft的工作人员显示清晰的错误消息可以为我们节省大量的工作时间...