string MyXMLDoc = "<?xml version='1.0'?>" +
"<!-- 我的 XML例子 -->" +
"<?pi MyProcessingInstruction?>" +
"<Root>" +
"<Node1 nodeId='1'>第一个节点</Node1>" +
"<Node2 nodeId='2'>第二个节点</Node2>" +
"<Node3 nodeId='3'>第三个节点</Node3>" +
"</Root>";
byte[] MyBytes = Encoding.UTF8.GetBytes(MyXMLDoc);
MyXML = "";
using (MemoryStream MyStream = new MemoryStream(MyBytes))
{
XmlReaderSettings MySettings = new XmlReaderSettings();
// 检查XML文档中的非法字符
MySettings.CheckCharacters = true;
using (XmlReader MyReader = XmlReader.Create(MyStream, MySettings))
{
int MyLevel = 0;
while (MyReader.Read())
{
switch (MyReader.NodeType)
{
case XmlNodeType.CDATA:
IndentWhiteSpace(MyLevel);
MyXML += String.Format("CDATA: {0}", MyReader.Value) + "/n";
break;
case XmlNodeType.Comment:
IndentWhiteSpace(MyLevel);
MyXML += String.Format("COMMENT: {0}", MyReader.Value) + "/n";
break;
case XmlNodeType.DocumentType:
IndentWhiteSpace(MyLevel);
MyXML += String.Format("DOCTYPE: {0}={1}" + "/n",
MyReader.Name, MyReader.Value);
break;
case XmlNodeType.Element:
IndentWhiteSpace(MyLevel);
MyXML += String.Format("ELEMENT: {0}", MyReader.Name) + "/n";
MyLevel++;
while (MyReader.MoveToNextAttribute())
{
IndentWhiteSpace(MyLevel);
MyXML += String.Format("ATTRIBUTE: {0}='{1}'",
MyReader.Name, MyReader.Value) + "/n";
}
break;
case XmlNodeType.EndElement:
MyLevel--;
break;
case XmlNodeType.EntityReference:
IndentWhiteSpace(MyLevel);
MyXML += String.Format("ENTITY: {0}", MyReader.Name) + "/n";
break;
case XmlNodeType.ProcessingInstruction:
IndentWhiteSpace(MyLevel);
MyXML += String.Format("INSTRUCTION: {0}={1}",
MyReader.Name, MyReader.Value) + "/n";
break;
case XmlNodeType.Text:
IndentWhiteSpace(MyLevel);
MyXML += String.Format("TEXT: {0}", MyReader.Value) + "/n";
break;
case XmlNodeType.XmlDeclaration:
IndentWhiteSpace(MyLevel);
MyXML += String.Format("DECLARATION: {0}={1}",
MyReader.Name, MyReader.Value) + "/n";
break;
}
}
}
}
MessageBox.Show(MyXML, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
"<!-- 我的 XML例子 -->" +
"<?pi MyProcessingInstruction?>" +
"<Root>" +
"<Node1 nodeId='1'>第一个节点</Node1>" +
"<Node2 nodeId='2'>第二个节点</Node2>" +
"<Node3 nodeId='3'>第三个节点</Node3>" +
"</Root>";
byte[] MyBytes = Encoding.UTF8.GetBytes(MyXMLDoc);
MyXML = "";
using (MemoryStream MyStream = new MemoryStream(MyBytes))
{
XmlReaderSettings MySettings = new XmlReaderSettings();
// 检查XML文档中的非法字符
MySettings.CheckCharacters = true;
using (XmlReader MyReader = XmlReader.Create(MyStream, MySettings))
{
int MyLevel = 0;
while (MyReader.Read())
{
switch (MyReader.NodeType)
{
case XmlNodeType.CDATA:
IndentWhiteSpace(MyLevel);
MyXML += String.Format("CDATA: {0}", MyReader.Value) + "/n";
break;
case XmlNodeType.Comment:
IndentWhiteSpace(MyLevel);
MyXML += String.Format("COMMENT: {0}", MyReader.Value) + "/n";
break;
case XmlNodeType.DocumentType:
IndentWhiteSpace(MyLevel);
MyXML += String.Format("DOCTYPE: {0}={1}" + "/n",
MyReader.Name, MyReader.Value);
break;
case XmlNodeType.Element:
IndentWhiteSpace(MyLevel);
MyXML += String.Format("ELEMENT: {0}", MyReader.Name) + "/n";
MyLevel++;
while (MyReader.MoveToNextAttribute())
{
IndentWhiteSpace(MyLevel);
MyXML += String.Format("ATTRIBUTE: {0}='{1}'",
MyReader.Name, MyReader.Value) + "/n";
}
break;
case XmlNodeType.EndElement:
MyLevel--;
break;
case XmlNodeType.EntityReference:
IndentWhiteSpace(MyLevel);
MyXML += String.Format("ENTITY: {0}", MyReader.Name) + "/n";
break;
case XmlNodeType.ProcessingInstruction:
IndentWhiteSpace(MyLevel);
MyXML += String.Format("INSTRUCTION: {0}={1}",
MyReader.Name, MyReader.Value) + "/n";
break;
case XmlNodeType.Text:
IndentWhiteSpace(MyLevel);
MyXML += String.Format("TEXT: {0}", MyReader.Value) + "/n";
break;
case XmlNodeType.XmlDeclaration:
IndentWhiteSpace(MyLevel);
MyXML += String.Format("DECLARATION: {0}={1}",
MyReader.Name, MyReader.Value) + "/n";
break;
}
}
}
}
MessageBox.Show(MyXML, "信息提示", MessageBoxButtons.OK, MessageBoxIcon.Information);