Skip to content

Instantly share code, notes, and snippets.

@cosminpopescu14
Created December 12, 2018 06:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cosminpopescu14/9399465abec9fa28c114747b589cd2eb to your computer and use it in GitHub Desktop.
Save cosminpopescu14/9399465abec9fa28c114747b589cd2eb to your computer and use it in GitHub Desktop.
using System;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApp22
{
class Program
{
static void Main(string[] args)
{
XmlReaderSettings settings = new XmlReaderSettings
{
DtdProcessing = DtdProcessing.Parse //this will REALYY parse xml file. https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Processing
};
XmlReader reader = XmlReader.Create("xml.xml", settings);
reader.MoveToContent();
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element:
Console.Write("<{0}>", reader.Name);
break;
case XmlNodeType.Text:
Console.Write(reader.Value);
break;
case XmlNodeType.CDATA:
Console.Write("<![CDATA[{0}]]>", reader.Value);
break;
case XmlNodeType.ProcessingInstruction:
Console.Write("<?{0} {1}?>", reader.Name, reader.Value);
break;
case XmlNodeType.Comment:
Console.Write("<!--{0}-->", reader.Value);
break;
case XmlNodeType.XmlDeclaration:
Console.Write("<?xml version='1.0'?>");
break;
case XmlNodeType.Document:
break;
case XmlNodeType.DocumentType:
Console.Write("<!DOCTYPE {0} [{1}]", reader.Name, reader.Value);
break;
case XmlNodeType.EntityReference:
Console.Write(reader.Name);
break;
case XmlNodeType.EndElement:
Console.Write("</{0}>", reader.Name);
break;
}
}
Console.ReadLine();
}
}
}
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE test [
<!ENTITY file SYSTEM 'file:///c:/xampp/htdocs/test.txt'> ]>
<test>
<x>&file;</x>
</test>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment