可以将XDocument.Load()和XDocument.Parse()组合成一个吗?

时间:2014-10-29 09:03:06

标签: .net xml-parsing linq-to-xml

我有XDocument.Load()从文件加载XML而XDocument.Parse()从字符串加载XML, 有没有办法将它们组合起来并动态加载文件或字符串?

1 个答案:

答案 0 :(得分:0)

假设你的意思是XDocument.PARSE()而不是XDocument.PRASE(),我相信下面的函数应该在这方面帮助你。 我们只是在加载之前检查文件是否存在,如果它不存在那么它应该是一个xml字符串。在这两种情况下,我们用try catch覆盖自己并返回null。

要使用下面的内容,我会在继续之前仔细检查返回值是否为空。

if(LoadXml(xmlFile) == null)
{
    //enter code for fail to load, will continue if correct.
}

功能:

     private XDocument LoadXml(string xmlFile)
     {
         //initialise a new XDocument
         XDocument doc = new XDocument();

         //check to see if xmlFile exists as a file in the OS.
         if (File.Exists(xmlFile))
         {
             //try XDocument.load()
             try
             {
                 doc = XDocument.Load(xmlFile);
             }
             catch (Exception)
             {
                 //if the load did not succeed then return null
                 return null;
             }
         }
         else
         {
             //if it is not a file then try parsing the string.
             try
             {
                 doc = XDocument.Parse(xmlFile);
             }
             catch (Exception)
             {
                 //if the parse failed (i.e. the string is not an xml format) then make doc = null
                 return null;
             }
         }
         //return doc
         return doc;
     }