Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XmlReader的ReadString方法删除/忽略CDATA标记_Xml_Xmlreader - Fatal编程技术网

XmlReader的ReadString方法删除/忽略CDATA标记

XmlReader的ReadString方法删除/忽略CDATA标记,xml,xmlreader,Xml,Xmlreader,我的行为非常奇怪,无法识别问题。在下面的代码段中,预期输出的是 <![CDATA[<air:FareInfo Key="10T"></air:FareInfo>/>]]> />]> 但是我越来越 <air:FareInfo Key="10T"></air:FareInfo>/> /> 为什么输出中缺少CDATA标记?我只是简单地使用XmlReader.ReadString(),它忽略了CDATA标记 string

我的行为非常奇怪,无法识别问题。在下面的代码段中,预期输出的是

<![CDATA[<air:FareInfo Key="10T"></air:FareInfo>/>]]>
/>]>
但是我越来越

<air:FareInfo Key="10T"></air:FareInfo>/>
/>
为什么输出中缺少CDATA标记?我只是简单地使用XmlReader.ReadString(),它忽略了CDATA标记

 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);
stringxml=”“+
"" + 
"/>]]>" + 
"";
Encoding Encoding=新的UTF8Encoding();
byte[]buffer=encoding.GetBytes(xml);
MemoryStream stream=新的MemoryStream(缓冲区);
XmlReaderSettings设置=新建XmlReaderSettings();
XmlReader=XmlReader.Create(流、设置);
reader.Read();
字符串输出=reader.ReadString();
控制台。写入(输出);
这方面的任何帮助都将是非常可观的。

请这样做:-

 switch (reader.NodeType) {
      case XmlNodeType.Text:
          Console.Write(reader.Value);
          break;
       case XmlNodeType.CDATA:
           Console.Write("<![CDATA[{0}]]>", reader.Value);
           break;
 }
开关(reader.NodeType){
案例XmlNodeType.Text:
Console.Write(reader.Value);
打破
案例XmlNodeType.CDATA:
Console.Write(“,reader.Value”);
打破
}

谢谢湿婆。我的想法是一样的。请告诉我为什么Readstring()忽略CDATA?在XML中,“![CDATA”是一个类似于“”的特殊标记。XmlReader忽略它的方式与忽略“”的方式相同。