我正在尝试将xsd添加到XmlSchemaSet中,但会收到以下错误“根级别的数据无效。第1行,第1位。”
XmlSchemaSet schemas = new XmlSchemaSet();
schemas.Add("", XmlReader.Create(new StringReader(@"C:\source\Net4\Clocks\Handlers\XML_Schemas\test.xsd")));
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="interface">
<xs:complexType>
<xs:sequence>
<xs:element name="node1" type="xs:string" />
<xs:element name="node2" type="xs:string" />
<xs:element name="node3" type="xs:string" />
<xs:element name="node4" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="node5" type="xs:unsignedByte" />
<xs:element name="node6">
<xs:complexType>
<xs:sequence>
<xs:element name="node6" type="xs:dateTime" />
<xs:element name="node7" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
答案 0 :(得分:2)
您需要将文件的内容传递到StringReader
,而不是文件的路径。
var pathToFile = @"C:\source\Net4\Clocks\Handlers\XML_Schemas\test.xsd";
var reader = new StringReader(File.ReadAllText(pathToFile));
schemas.Add("", XmlReader.Create(reader));
将阅读器添加到XmlSchemaSet
的Alternativ方法是
schemas.Add("", new XmlTextReader(pathToFile));