我正在尝试从已加载到XML文档中的HMTL文档中过滤掉空字体nodex。
我的XML看起来像这样:
<root>
<font>
<font color="#141414">
<font>
<font></font>
</font><font></font><font> </font>(I need this text in the outer font)
</font>
</font>
</root>
我需要它看起来像这样:
<root>
<font color="#141414"> (I need this text in the outer font)</font>
</root>
请注意,内部字体节点的空间也已移动。
我使用Stack Overflow上的递归函数编写了一个控制台应用程序,但它不起作用。我不能将Linq用于XML,也不能使用任何第三方库。我有点失落。
这是我的控制台应用程序:
class Program
{
static void Main(string[] args)
{
XmlDocument doc = new XmlDocument();
doc.LoadXml("<root><font><font color=\"#141414\"><font><font></font></font><font></font><font> </font>(I need this text in the outer font)</font></font></root>");
XmlNode node = doc.SelectSingleNode("root");
RemoveEmptyFontTags(node.ChildNodes);
}
private static void RemoveEmptyFontTags(XmlNodeList nodes)
{
foreach(XmlNode node in nodes)
{
RemoveEmptyFontTags(node.ChildNodes);
if(node.Name.ToLower() == "font" && node.Attributes.Count == 0)
{
node.ParentNode.InnerXml = node.InnerXml;
}
}
}
}