我有一个非常奇怪的行为,无法识别问题。在下面的代码片段中

<![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);

在这方面的任何帮助都是非常可观的。

最佳答案

这样做:

 switch (reader.NodeType) {
      case XmlNodeType.Text:
          Console.Write(reader.Value);
          break;
       case XmlNodeType.CDATA:
           Console.Write("<![CDATA[{0}]]>", reader.Value);
           break;
 }

关于xml - XmlReader的ReadString方法删除/忽略CDATA标记,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11012670/

10-09 19:25