移动XML文本,同时过滤节点树

时间:2015-02-02 21:41:24

标签: xml c#-4.0

我正在尝试从已加载到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;
                }                
            }
        }
    }​

0 个答案:

没有答案