2014-01-06 86 views
4

大家好我想检查我的xml文件,如果它是空的或不是。我试图更新一个XML数据到另一个为此我使用以下code.Now请告诉我如何检查我的XML文件是否有数据 这里是我用来更新我的XML文件的代码如何检查xml文件是否为空或使用c#

protected void CheckUpdates() 
{ 
    StringReader strReader = new StringReader("..\\xml\\Updatelist.xml"); 
    XmlReader reader = XmlReader.Create(strReader); 
    try 
    { 
     while (reader.Read()) 
     { 
      var originalXmlDoc = XDocument.Load("..\\xml\\list.xml"); var newXmlDoc = XDocument.Load("..\\xml\\Updatelist.xml"); 

      foreach (var newElement in newXmlDoc.Element("blocker").Elements("lst")) 
      { 
       newElement.Value.Trim(); 
       if (!originalXmlDoc.Element("blocker").Elements("lst") 
         .Any(oldElement => oldElement.Value.Trim().Equals(
         newElement.Value.Trim(), 
         StringComparison.InvariantCultureIgnoreCase))) 
       { 
        originalXmlDoc.Element("blocker").Add(new XElement("lst", newElement.Value)); 
       } 
      } 
      originalXmlDoc.Save("..\\xml\\list.xml", SaveOptions.None); 

      XmlDocument doc = new XmlDocument(); 
      doc.Load("..\\xml\\Updatelist.xml"); 
      doc.DocumentElement.RemoveAll(); 
      doc.Save("..\\xml\\Updatelist.xml"); 
      } 
     } 
    catch (XmlException ex) 
    { 
     //Catch xml exception 
     //in your case: root element is missing 
    } 
} 

我收到此错误

数据在根级别是无效的。行1,位置1.

请告诉我如何检查我的Updatelist.xml是否为空?

现在我得到这个错误

+1

请参阅 [这里] [1] [1]:http://www.codeproject.com/Questions/287593/how-to-check-if-xml-document-is-blank-或有价值 – pravprab

回答

9

两种方式来做到这一点。

第一个是读取该文件并检查其结构以查看是否有任何儿童在其中。请注意,属性ChildNodes仅返回XML DOM的特定级别上的子级。

XmlDocument xDoc = new XmlDocument(); 
if (xDoc.ChildNodes.Count == 0) { 
    // It is empty 
}else if (xDoc.ChildNodes.Count == 1) { 
    // There is only one child, probably the declaration node at the beginning 
}else if (xDoc.ChildNodes.Count > 1) { 
    // There are more children on the **root level** of the DOM 
} 

第二种方法是将抓住各自XMLException加载文档时抛出。

try 
{ 
    XmlDocument doc = new XmlDocument(); 
    doc.Load("test.xml"); 
} 
catch (XmlException exc) 
{ 
    //invalid file 
} 

希望我帮了忙!

+0

我想你从http://stackoverflow.com/questions/1260063/determine-if-xml-file-contains-data-c-sharp得到了这个吗?但不幸的是,这并没有帮助他 –

+0

其实我最近也用过它。我不记得我是如何找到它的。对不起,没有帮助。如果你想,你可以告诉我一些细节,也许我们找到一个解决方案... –

+0

@PantelisNatsiavas看到我只是想检查我的xml是空的还是没有在这个检查的基础上我想做我的进一步过程 –

1

你可以尝试加载XML到XML文档并捕获异常。 下面是示例代码:

var doc = new XmlDocument(); 
try { 
    doc.LoadXml(content); 
} catch (XmlException e) { 
    // put code here that should be executed when the XML is not valid. 
} 

希望它能帮助。

(OR)

如果你想要的功能(文体上,而不是性能),实现它自己:

public class MyXmlDocument: XmlDocument 
{ 
    bool TryParseXml(string xml){ 
    try{ 
     ParseXml(xml); 
     return true; 
    }catch(XmlException e){ 
     return false; 
    } 
} 

使用此功能可以知道它是否有效或无效

Source

相关问题