![](/img/trans.png)
[英]How do I make the value of an XElement be wrapped in ![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.