2013-04-04 83 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