private string ReadNode(XmlNode node)
{
if (node == null || node.NodeType != XmlNodeType.Element)
return string.Empty;
StringBuilder sb = new StringBuilder();
foreach (XmlNode child in node.ChildNodes)
{
if (child.NodeType != XmlNodeType.Element) continue;
switch (child.LocalName)
{
case "t": // Text
sb.Append(child.InnerText.TrimEnd());
if (susp_char_flag) susp_char_count += child.InnerText.TrimEnd().Length;
susp_char_flag = false;
//string space = ((XmlElement)child).GetAttribute("xml:space");
//if (!string.IsNullOrEmpty(space) && space == "preserve")
// sb.Append(' ');
Console.WriteLine(child.InnerText);
Console.WriteLine(child.InnerText.Length);
break;
case "cr": // Carriage return
case "br": // Page break
//sb.Append(Environment.NewLine);
break;
case "tab": // Tab
//sb.Append("\t");
break;
case "p": // Paragraph
sb.Append(ReadNode(child));
//sb.Append(Environment.NewLine);
//sb.Append(Environment.NewLine);
break;
case "shd":
susp_char_flag = true;
sb.Append(ReadNode(child));
break;
default:
sb.Append(ReadNode(child));
break;
}
}
return sb.ToString();
}