internal string EcmaToXmlString(System.Xml.XmlNode node)
{
// See ECMA 357 Section 10.2.1
StringBuilder s = new StringBuilder();
int indentLevel = 0;
if (prettyPrint)
{
for (int i = 0; i < indentLevel; i++)
{
s.Append(' ');
}
}
if (node is XmlText)
{
string data = ((XmlText)node).Data;
// TODO Does Java trim() work same as XMLWhitespace?
string v = (prettyPrint) ? data.Trim() : data;
s.Append(EscapeElementValue(v));
return s.ToString();
}
if (node is XmlAttribute)
{
string value = ((XmlAttribute)node).Value;
s.Append(EscapeAttributeValue(value));
return s.ToString();
}
if (node is XmlComment)
{
s.Append("<!--" + ((XmlComment)node).GetNodeValue() + "-->");
return s.ToString();
}
if (node is XmlProcessingInstruction)
{
XmlProcessingInstruction pi = (XmlProcessingInstruction)node;
s.Append("<?" + pi.Target + " " + pi.GetData() + "?>");
return s.ToString();
}
s.Append(ElementToXmlString((XmlElement)node));
return s.ToString();
}