2013-04-04 109 views
0

如何测试结束标记是否可用:结束标记测试

例如,

<A> 
    <n> 

    <r> 
    </r> 

<b> 
</b> 

在上述情况下,我错过了</A></n>关闭标签。
我该如何检查?

CODE:

try 
      { 
       XmlDocument xdoc = new XmlDocument(); 
       xdoc.LoadXml(FileName); 

      } 
      catch (XmlException xe) 
      { 
       XmlDocument xdoc = new XmlDocument(); 
       xdoc.LoadXml(FileName); 
       xdoc.AppendChild(xdoc.CreateElement("/n")); 
       xdoc.AppendChild(xdoc.CreateElement("/A")); 
      } 

但它给我一个例外:数据在根无效。 xml缺少/ n和/ A的结束标记。请指教。

编辑2:

try 
      { 
       XmlDocument xdoc = new XmlDocument(); 
       xdoc.LoadXml(FileName); 
           } 
      catch (XmlException xe) 
      { 
       using (StreamWriter w = File.AppendText(FileName)) 
      { 
       w.WriteLine("</n>"); 
       w.WriteLine("</A>"); 
      } 
      } 

现在与编辑2,它会和纠正与丢失的标签文件名。但是如果xml已经可用,它仍然进入另一个标记/ n/A,并给我例外:意外的结束标记。

+0

你加载一个XMl文件或创建和XMl文件? – Oedum 2013-04-04 07:52:45

+0

@Oedum:我正在加载一个已经存在的xml文件 – user726720 2013-04-04 07:53:26

+0

你的进度是什么? – Shaharyar 2013-04-04 07:53:43

回答

3

它加载到一个XmlDocument,将一个try-catch周围,如果有任何异常就意味着有一些问题与您的XML字符串(缺少结束标记,无效字符等) -

try{ 
    XmlDocument xdoc = new XmlDocument(); 
    xdoc.LoadXml(xmlString); 
} 
catch (XmlException xe) 
{ 
    System.Windows.Forms.MessageBox.Show(xe.Message); 
} 
+0

但我需要检查什么标签丢失,然后添加这些标签来修复xml进一步处理。通常情况下,我发现'A','n'标签缺失 – user726720 2013-04-04 08:05:36

+1

如果您尝试我发布的代码,则会看到它将返回异常消息为 '发生意外的文件结束。以下元素未关闭:n,A行7,位置5。' 你所做的是你自己,这是我相信验证XML的最简单方法 – Arun 2013-04-04 08:08:06

+0

看起来不错,那么我如何访问n例如并在catch中关闭它 – user726720 2013-04-04 08:10:49