我正在使用以下内容在C#应用程序中加载XML文档:
XDocument xd1 = new XDocument(); xd1 = XDocument.Load(myfile);
但在此之前,我会测试以确保文件存在:
File.Exists(myfile);
但是......是否有一种(简单)方法在XDocument.Load()之前测试文件以确保它是一个有效的XML文件?换句话说,我的用户可能会意外地在文件浏览器中单击另一个文件并尝试加载,例如,.php文件会导致异常.
我能想到的唯一方法是将它加载到StreamWriter中并简单地对前几个字符进行文本搜索,以确保它们"
谢谢!
-Adeena
如果要向用户显示消息,可能只是值得捕获特定的异常:
try { XDocument xd1 = new XDocument(); xd1 = XDocument.Load(myfile); } catch (XmlException exception) { ShowMessage("Your XML was probably bad..."); }
这个问题将" 格式良好 "与" 有效 "XML文档混淆.
根据定义,有效的xml文档是一个格式良好的文档.此外,它必须满足DTD或模式(xml模式,relaxng模式,schematron或其他约束)才有效.
从问题的措辞来看,很可能它会问:
"如何确保文件包含格式良好的XML文档?".
答案是,如果XML文档可以通过兼容的XML解析器成功解析,那么它就是格式良好的.由于XDocument.Load()方法正是这样做的,因此您只需要捕获异常,然后得出结论文件中包含的文本格式不正确.
只需加载它并捕获异常.同样的File.Exists()
- 文件系统是易失性的,因为File.Exists()
返回true并不意味着你将能够打开它.