我必须使用[System.Xml.XmlReaderSettings] / [System.Xml.ValidationType] :: Schema
根据其架构验证XML(伪样品)
<?xml version="1.0" encoding="UTF-8"?>
<rootelement>
<firstnode>(here validation error against the schema)
</firstnode>
</rootelement>
现在,如果XSD位于文件上,它可以正常工作,例如:
$readerSettings = New-Object -TypeName System.Xml.XmlReaderSettings
$readerSettings.Schemas.Add($namespace,"c:\schema.xsd")
给出正确的验证错误:
Line: 1 Offset: 202 - The element 'FirstNode' has invalid child element 'Title'. List of possible elements expected: 'Description'.
但使用URI:
$readerSettings.Schemas.Add($Namespace,'https://server:port/xmlschema/Schema.xsd')
或StringReader:
$CurrentXSD=Invoke-restMethod -Uri 'http://server:port/xmlschema/Schema.xsd'
$readerSettings.Schemas.Add($Namespace,(new-Object System.IO.StringReader($CurrentXSD.OuterXML))
它不起作用,抱怨缺少根元素。
Line: 1 Offset: 40 - The 'rootelement' element is not declared
在所有3种情况下,XSD总是相同的。 有人可以解释一下吗? 非常感谢!