Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.NET使用内联XDR模式解析XML时出现错误?_.net_Xml_Field Device Tool_Xdr Schema - Fatal编程技术网

.NET使用内联XDR模式解析XML时出现错误?

.NET使用内联XDR模式解析XML时出现错误?,.net,xml,field-device-tool,xdr-schema,.net,Xml,Field Device Tool,Xdr Schema,在.NET中进行验证时,有一个XML导致XMLSchemaException。使用MSXML验证相同的XML很好,不会导致错误 XML文档按照底层FDT技术的要求使用XDR内联模式,因此我不能使用DTD或W3C模式,我必须坚持使用陈旧的XDR验证 我已将其最小化为以下SSCCE,以便您可以自己尝试。也可从以下网址获得: 使用System.IO; 使用System.Xml; 命名空间XDRInlineReferenceInline { 公共课程 { 私有静态字符串xml= @" "; 公共静态vo

在.NET中进行验证时,有一个XML导致XMLSchemaException。使用MSXML验证相同的XML很好,不会导致错误

XML文档按照底层FDT技术的要求使用XDR内联模式,因此我不能使用DTD或W3C模式,我必须坚持使用陈旧的XDR验证

我已将其最小化为以下SSCCE,以便您可以自己尝试。也可从以下网址获得:

使用System.IO;
使用System.Xml;
命名空间XDRInlineReferenceInline
{
公共课程
{
私有静态字符串xml=
@"
";
公共静态void Main()
{
var textleader=new-XmlTextReader(new-StringReader(xml));
var validatingReader=new-XmlValidatingReader(textleader){ValidationType=ValidationType.XDR};
var xmlDoc=新的XmlDocument();
加载(validatingReader);
}
}
}
这是.NET解析器的一个bug,还是我可以对其进行任何更改以使其正常工作?

我尝试过在XML文档中更改模式的顺序,但这没有帮助


请不要建议将两个不同的模式组合成一个模式。我已经试过了,但很不幸,这不是一个选择。由于架构名称同时用作命名空间,因此需要更改所有现有产品的XPath。

[obsoletateAttribute(“使用XmlReader.Create()方法创建的XmlReader,改用适当的XmlReaderSettings。http://go.microsoft.com/fwlink/?linkid=14202”)
So,为什么不能组合模式?@JohnSaunders:我尝试了XmlReader.Create(),但它找不到问题,即使我添加了更大的错误。XmlReaderSettings上的ValidationType.XDR也过时了。我不知道它是否支持XDR模式。事实上,我不知道.NET是否仍然支持XDR。出于好奇:我已经尝试过重构代码以消除警告,但失败了:
using System.IO;
using System.Xml;

namespace XDRInlineReferenceInline
{
    public class Program
    {
        private static string xml =
            @"<Root xmlns:dt=""urn:schemas-microsoft-com:datatypes"" xmlns:s=""urn:schemas-microsoft-com:xml-data"">
  <s:Schema name=""InlineA"">
    <s:AttributeType name=""att"" dt:type=""ui1"" />
  </s:Schema>
  <s:Schema name=""InlineB"" xmlns:a=""x-schema:#InlineA"">
    <s:ElementType name=""Ele"" content=""empty"" model=""closed"">
      <s:attribute type=""a:att"" required=""yes"" />
    </s:ElementType>
  </s:Schema>
  <Ele xmlns=""x-schema:#InlineB"" xmlns:a=""x-schema:#InlineA"" a:att=""1"" />
</Root>";

        public static void Main()
        {
            var textReader = new XmlTextReader(new StringReader(xml));
            var validatingReader = new XmlValidatingReader(textReader) {ValidationType = ValidationType.XDR};
            var xmlDoc = new XmlDocument();
            xmlDoc.Load(validatingReader);
        }
    }
}