繁体   English   中英

如何删除XElement的CDATA标签?

[英]How do I remove the CDATA tag of an XElement?

我有一些接收XML的代码,并且有可能出现CDATA标签元素。 将一个标志传递到该方法中,该标志指出是否应存在CDATA标记,如果该标志为false,则应除去CDATA标记(如果存在),我该如何在不解析query.Value的情况下执行此操作?

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???
    }
}

尝试这个:

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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM