提问人:James 提问时间:11/2/2023 更新时间:11/2/2023 访问量:38
从 xmlschemaset 转换为 xmlnode 时出错
Error converting from xmlschemaset to xmlnode
问:
我正在尝试读取json文件并使用xsd进行解析并从中生成xml输出。但是我的代码抛出构建错误。无法从“System.Xml.Schema.XmlSchemaSet”转换为“System.Xml.XmlNode”
static void Main(string[] args)
{
string json = File.ReadAllText(@"C:\Test\json1.json");
string xsd = File.ReadAllText(@"C:\Test\xsd1.xsd");
bool isValid = ValidateJsonAgainstXsd(json, xsd);
if (!isValid)
{
Console.WriteLine("JSON is not valid according to the XSD.");
return;
}
XmlDocument xmlDoc = JsonConvert.DeserializeXmlNode(json, "root");
xmlDoc.Save(@"C:\Test\my.xml");
}
static bool ValidateJsonAgainstXsd(string json, string xsd)
{
XmlSchemaSet schemas = new XmlSchemaSet();
schemas.Add("", XmlReader.Create(new StringReader(xsd)));
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(JsonConvert.DeserializeXmlNode(json).OuterXml);
bool isValid = true;
xmlDoc.Validate((sender, e) =>
{
Console.WriteLine(e.Message);
isValid = false;
}, schemas);
return isValid;
}
当它尝试使用变量时会出现错误schemas
答:
0赞
Yong Shun
11/2/2023
#1
从这个例子中:在DOM中验证XML文档,你应该将架构添加到instance的属性中。Schemas
XmlDocument
static bool ValidateJsonAgainstXsd(string json, string xsd)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(JsonConvert.DeserializeXmlNode(json).OuterXml);
xmlDoc.Schemas.Add("", XmlReader.Create(new StringReader(xsd)));
bool isValid = true;
xmlDoc.Validate((sender, e) =>
{
Console.WriteLine(e.Message);
isValid = false;
});
return isValid;
}
评论
0赞
Yong Shun
11/2/2023
演示 @ .NET Fiddle
0赞
James
11/2/2023
我看不出你在哪里使用JSON格式。您使用 XML。您读取 json 文件,然后将 xsd 应用于它,然后从中生成 xml
0赞
Yong Shun
11/2/2023
对不起,你的意思是我分享的演示链接,或者?如果您指的是演示链接,是的,我的输入测试数据使用的是 XML,然后将其转换为 JSON 作为测试数据,以根据您提供的代码进行调整,该代码验证将转换为 XML 模式的 XML。
0赞
Yong Shun
11/2/2023
或者您可以使用/fork 我的演示链接,粘贴您的 JSON 和 XML 模式来验证代码。
0赞
James
11/2/2023
我的 json 有点太大了,所以不确定我如何将其附加到 Fiddle
评论