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忽略它的方式与忽略“”的方式相同。