2010-08-25 108 views
1

我有一些接收一些XML的代碼,並且存在CDATA標記元素存在的可能性。一個標誌被傳遞到方法中,說明CDATA標籤是否應該存在,如果標誌爲false,那麼CDATA標籤應該被刪除(如果存在),我將如何做到這一點而不解析查詢。值?如何刪除XElement的CDATA標籤?

private static void CDataTagUtility(XmlDocument catalog, XElement newData, bool addCdataTag) 
{ 
    XElement query = newData.Element("Query").Element("CommandText"); 
    if (addCdataTag) 
    { 
     XmlCDataSection encapsulatedQuery = catalog.CreateCDataSection(query.Value); 
     try 
     { 
      query.SetValue(encapsulatedQuery.OuterXml); 
     } 
     catch (ArgumentException exc) { /*Thrown due to CDATA tag already present - ignore*/ } 
    } 
    else //check for cdata tag - remove if present 
    { 
     //How do I remove the CDATA encapsulation tag??? 
    } 
} 
+0

你爲什麼要刪除它?事實上,你爲什麼操縱CDATA呢? – 2010-08-25 21:27:47

+1

這是一個XML編輯工具。這不是我們操縱CDATA,這個工具是操縱CDATA的門戶藥物。 – Eric 2010-08-25 21:45:36

回答

1

試試這個:

static void RemoveCdata(XmlNode root) 
{ 
    foreach (XmlNode n in root.ChildNodes) 
    { 
     if (n.NodeType == XmlNodeType.CDATA) 
      root.RemoveChild(n); 
     else if (n.NodeType == XmlNodeType.Element) 
      RemoveCdata(n); 
    } 
} 

... 

RemoveCdata(query);