【发布时间】:2020-08-06 14:05:00
【问题描述】:
我是 C# 新手,我正在尝试使用 C# 和 Visual Studio Code (VSC) 创建一个 .exe。 .exe 应接收两个参数,它们是 xsd 和 xml 文件的完整路径。
例子:
- xpto.exe "C:\Users\dpaiva\Desktop\catalog.xml" "D:\catalog.xsd"
我正在修改我发现的代码,因为这不是 IT 或 C# 中的新“问题”。
static void Main(string[] args) {
if (args == null)
{
throw new ArgumentNullException ("source");
} else {
var xsdfile = "";
var xmlfile = "";
for (int i = 0; i < args.Length; i++){
if (i==0){
xsdfile = args[i];
} else if (i==1){
xmlfile = args[i];
}
}
XmlSchemaSet schema = new XmlSchemaSet();
if (xsdfile != null){
schema.Add("", xsdfile);
}
XmlReader rd = XmlReader.Create(xmlfile);
XDocument doc = XDocument.Load(rd);
doc.Validate(schema, ValidationEventHandler);
}
static void ValidationEventHandler(object sender, ValidationEventArgs e) {
XmlSeverityType type = XmlSeverityType.Warning;
if (Enum.TryParse < XmlSeverityType > ("Error", out type)) {
if (type == XmlSeverityType.Error) throw new Exception(e.Message);
}
}
}
当我在 VSC 中调试代码并显示以下错误时: 第 37 行:schema.Add("", xsdfile);
System.Private.Xml.dll 中的 System.ArgumentNullException:“值不能为空”。
由于我对 C# 的经验不足,我不知道如何解决这个问题,以及我的代码是否可以正确处理 url。
谁能帮我解决这个问题?
【问题讨论】:
标签: c# xml visual-studio-code xsd xsd-validation