当前位置:  开发笔记 > 编程语言 > 正文

在使用XDocument.Load()加载文件之前,如何测试文件以查看它是否是有效的XML文件?

如何解决《在使用XDocument.Load()加载文件之前,如何测试文件以查看它是否是有效的XML文件?》经验,为你挑选了3个好方法。

我正在使用以下内容在C#应用程序中加载XML文档:

XDocument xd1 = new XDocument();
xd1 = XDocument.Load(myfile);

但在此之前,我会测试以确保文件存在:

File.Exists(myfile);

但是......是否有一种(简单)方法在XDocument.Load()之前测试文件以确保它是一个有效的XML文件?换句话说,我的用户可能会意外地在文件浏览器中单击另一个文件并尝试加载,例如,.php文件会导致异常.

我能想到的唯一方法是将它加载到StreamWriter中并简单地对前几个字符进行文本搜索,以确保它们"

谢谢!

-Adeena



1> Jennifer..:

如果要向用户显示消息,可能只是值得捕获特定的异常:

 try
 {
   XDocument xd1 = new XDocument();
   xd1 = XDocument.Load(myfile);
 }
 catch (XmlException exception)
 {
     ShowMessage("Your XML was probably bad...");
 }



2> Dimitre Nova..:

这个问题将" 格式良好 "与" 有效 "XML文档混淆.

根据定义,有效的xml文档是一个格式良好的文档.此外,它必须满足DTD或模式(xml模式,relaxng模式,schematron其他约束)才有效.

从问题的措辞来看,很可能它会问:

"如何确保文件包含格式良好的XML文档?".

答案是,如果XML文档可以通过兼容的XML解析器成功解析,那么它就是格式良好的.由于XDocument.Load()方法正是这样做的,因此您只需要捕获异常,然后得出结论文件中包含的文本格式不正确.



3> Joel Coehoor..:

只需加载它并捕获异常.同样的File.Exists()- 文件系统是易失性的,因为File.Exists()返回true并不意味着你将能够打开它.

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有