Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ReadString method of XmlReader removes/ignore CDATA tag

Tags:

xml

xmlreader

I'm getting a very strange behavior and unable to identify the issue. In following code snippet expected out was

<![CDATA[<air:FareInfo Key="10T"></air:FareInfo>/>]]>

but I'm getting

<air:FareInfo Key="10T"></air:FareInfo>/>

why CDATA tag is missing in output? I'm simply using XmlReader.ReadString() and it ignores CDATA tag.

 string xml = "<FareInfo>" + 
        "<![CDATA[<air:FareInfo Key=\"10T\">" + 
            "</air:FareInfo>/>]]>" + 
        "</FareInfo>";

        Encoding encoding = new UTF8Encoding();
        byte[] buffer = encoding.GetBytes(xml);
        MemoryStream stream = new MemoryStream(buffer);

        XmlReaderSettings settings = new XmlReaderSettings();
        XmlReader reader = XmlReader.Create(stream, settings);

        reader.Read();

        string output = reader.ReadString();

        Console.Write(output);

Any help in this regard will be highly appreciable.

like image 823
Rizwan Avatar asked Jan 25 '26 19:01

Rizwan


1 Answers

Do this way:-

 switch (reader.NodeType) {
      case XmlNodeType.Text:
          Console.Write(reader.Value);
          break;
       case XmlNodeType.CDATA:
           Console.Write("<![CDATA[{0}]]>", reader.Value);
           break;
 }
like image 63
Siva Charan Avatar answered Jan 27 '26 16:01

Siva Charan



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!