XmlDocument.Validate(...)中的“类型'http://www.w3.org/2000/09/xmldsig#:SignatureType'未声明”

伏塔

我有这个非常简单的XSD模式

<?xml version = "1.0" encoding = "UTF-8"?>
<schema xmlns = "http://www.w3.org/2001/XMLSchema"
     targetNamespace = "http://my.domain/xmlschemas/message"
     xmlns:mmm = "http://my.domain/xmlschemas/message"
     xmlns:ds = "http://www.w3.org/2000/09/xmldsig#"
     xmlns:xsd = "http://www.w3.org/2001/XMLSchema"
     elementFormDefault = "qualified">
    <import namespace = "http://www.w3.org/2000/09/xmldsig#" schemaLocation = "xmldsig-core-schema.xsd"/>
  <element name = "message">
        <complexType>
            <sequence>  
                 <element name = "Signature" type = "ds:SignatureType" minOccurs = "0" maxOccurs = "unbounded"/>
            </sequence>
        </complexType>
    </element>
</schema>

存储为我的Visual Studio 2010 C#项目的嵌入式资源以及我xmldsig-core-schema.xsd从中下载的资源www.w3.org/TR/xmldsig-core/xmldsig-core-schema.xsd

我想针对这个XSD模式验证我的文档。我的文件:

<?xml version="1.0" encoding="UTF-8"?>
<message xmlns="http://my.domain/xmlschemas/message">
</message>

我通过XmlDocument.Validate(...)这种方式使用方法进行验证:

XmlDocument doc = new XmlDocument();
doc.PreserveWhitespace = true;
doc.Load(inputStream); //XML document loads correctly...

Assembly myAssembly = Assembly.GetExecutingAssembly();
using (Stream schemaStream = myAssembly.GetManifestResourceStream("XmlSigTest.Resources.message.xsd"))
{
     XmlSchema schema = XmlSchema.Read(schemaStream, null);
     doc.Schemas.Add(schema); //XSD schema loads correctly
}

bool ok = true;
doc.Validate((s, e) => //throws Exception!!!
{
     ok = false;
});

此代码在doc.Validate(...)消息中抛出异常Type 'http://www.w3.org/2000/09/xmldsig#:SignatureType' is not declared但是,在Visual Studio XML编辑器中没有警告或错误,我可以SignatureType在Visual Studio XML Schema Explorer中看到为什么会引发此异常?我该怎么办?

伏塔

我自己解决了这个问题。我的XSD的这一行效果不佳:

<import namespace = "http://www.w3.org/2000/09/xmldsig#" schemaLocation = "xmldsig-core-schema.xsd"/>

我以为doc.Validate(...)会自动下载或找到所有引用的外部架构。xmldsig-core-schema.xsd以我为例)。好吧...那不会。

我必须手动将引用的架构添加到该架构doc.Schemas,此后就可以了。

结果代码:

XmlDocument doc = new XmlDocument();
doc.PreserveWhitespace = true;
doc.Load(inputStream);

Assembly myAssembly = Assembly.GetExecutingAssembly();
foreach (string resource in new string[] {"message.xsd", "xmldsig-core-schema.xsd"}) {
      using (Stream schemaStream = myAssembly.GetManifestResourceStream("XmlSigTest.Resources." + resource))
      {
             XmlSchema schema = XmlSchema.Read(schemaStream, null);
             doc.Schemas.Add(schema);
      }
}

bool ok = true;
doc.Validate((s, e) =>
{
     ok = false;
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

找不到类型:'(模式,http://www.w3.org/2001/XMLSchema,)

来自分类Dev

NSMultipleValuesMarker在Swift 3中使用未声明的类型

来自分类Dev

'xsi'是使用XmlDocument的未声明前缀

来自分类Dev

“ xsi”是使用XmlDocument的未声明的前缀

来自分类Dev

错误:属性声明的非法名称空间:http://www.w3.org/2001/XMLSchema-instance

来自分类Dev

BRAOfficeDocumentPackage未声明的类型

来自分类Dev

升级到Swift 3时使用未声明的类型

来自分类Dev

<element> .setAttributeNS('http://www.w3.org/1999/xlink','xlink:href','<reference>'); 在Firefox中无法使用

来自分类Dev

使用未声明的日期类型

来自分类Dev

Swift'使用未声明的类型'

来自分类Dev

使用未声明的类型'AttributedString'

来自分类Dev

使用未声明的类型“ Firebase”

来自分类Dev

使用未声明的类型'GMSPlacesClient'

来自分类Dev

使用未声明的类型'UIWindowScene'

来自分类Dev

使用未声明的类型“ T”

来自分类Dev

使用未声明的类型问题

来自分类Dev

使用未声明的类型“ Firebase”

来自分类Dev

使用未声明的类型'UIApplicationLaunchOptionsKey'

来自分类Dev

使用未声明的类型'CPTMutableAxisLabelSet'

来自分类Dev

使用未声明的类型WKActionSheet

来自分类Dev

使用未声明的类型 'SignalProducerType

来自分类Dev

使用未声明的类型“MainGameScreenViewController”

来自分类Dev

WS 响应中没有元素内容。上层元素中只有一个 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

来自分类Dev

为http://www.w3.org/2001/XMLSchema命名空间导入XSD吗?

来自分类Dev

具有“ http://www.w3.org/2001/XMLSchema”名称空间的性能影响

来自分类Dev

在VBA中未声明函数

来自分类Dev

在VBA中未声明函数

来自分类Dev

操场上未声明的类型“ NSView”

来自分类Dev

字符串是未声明的类型吗?

Related 相关文章

  1. 1

    找不到类型:'(模式,http://www.w3.org/2001/XMLSchema,)

  2. 2

    NSMultipleValuesMarker在Swift 3中使用未声明的类型

  3. 3

    'xsi'是使用XmlDocument的未声明前缀

  4. 4

    “ xsi”是使用XmlDocument的未声明的前缀

  5. 5

    错误:属性声明的非法名称空间:http://www.w3.org/2001/XMLSchema-instance

  6. 6

    BRAOfficeDocumentPackage未声明的类型

  7. 7

    升级到Swift 3时使用未声明的类型

  8. 8

    <element> .setAttributeNS('http://www.w3.org/1999/xlink','xlink:href','<reference>'); 在Firefox中无法使用

  9. 9

    使用未声明的日期类型

  10. 10

    Swift'使用未声明的类型'

  11. 11

    使用未声明的类型'AttributedString'

  12. 12

    使用未声明的类型“ Firebase”

  13. 13

    使用未声明的类型'GMSPlacesClient'

  14. 14

    使用未声明的类型'UIWindowScene'

  15. 15

    使用未声明的类型“ T”

  16. 16

    使用未声明的类型问题

  17. 17

    使用未声明的类型“ Firebase”

  18. 18

    使用未声明的类型'UIApplicationLaunchOptionsKey'

  19. 19

    使用未声明的类型'CPTMutableAxisLabelSet'

  20. 20

    使用未声明的类型WKActionSheet

  21. 21

    使用未声明的类型 'SignalProducerType

  22. 22

    使用未声明的类型“MainGameScreenViewController”

  23. 23

    WS 响应中没有元素内容。上层元素中只有一个 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

  24. 24

    为http://www.w3.org/2001/XMLSchema命名空间导入XSD吗?

  25. 25

    具有“ http://www.w3.org/2001/XMLSchema”名称空间的性能影响

  26. 26

    在VBA中未声明函数

  27. 27

    在VBA中未声明函数

  28. 28

    操场上未声明的类型“ NSView”

  29. 29

    字符串是未声明的类型吗?

热门标签

归档