Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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
C# 使用C解析XML文件#_C#_Xml - Fatal编程技术网

C# 使用C解析XML文件#

C# 使用C解析XML文件#,c#,xml,C#,Xml,虽然这似乎是一个非常琐碎的问题,但我试图理解XMLReader类及其成员。给定一个XML文件,我想退出打印XML声明 static void Main(string[] args) { StringBuilder output = new StringBuilder(); String xmlString = @"<?xml version='1.0'?> <!-- Th

虽然这似乎是一个非常琐碎的问题,但我试图理解XMLReader类及其成员。给定一个XML文件,我想退出打印XML声明

 static void Main(string[] args)
    {
            StringBuilder output = new StringBuilder();

            String xmlString =
                    @"<?xml version='1.0'?>
    <!-- This is a sample XML document -->
    <Items>
      <Item>test with a child element <more/> stuff</Item>
    </Items>";
            // Create an XmlReader
            using (XmlReader reader = XmlReader.Create(new StringReader(xmlString)))
            {
                XmlWriterSettings ws = new XmlWriterSettings();
                ws.Indent = true;
                using (XmlWriter writer = XmlWriter.Create(output, ws))
                {

                    // Parse the file and display each of the nodes.
                    while (reader.Read())
                    {
                        switch (reader.NodeType)
                        {
                            case XmlNodeType.Element:
                                writer.WriteStartElement(reader.Name);
                                break;
                            case XmlNodeType.Text:
                                writer.WriteString(reader.Value);
                                break;
                            case XmlNodeType.XmlDeclaration:
                            case XmlNodeType.ProcessingInstruction:
                                writer.WriteProcessingInstruction(reader.Name, reader.Value);
                                break;
                            case XmlNodeType.Comment:
                                writer.WriteComment(reader.Value);
                                break;
                            case XmlNodeType.EndElement:
                                writer.WriteFullEndElement();
                                break;
                        }
                    }

                }
            }
           Console.WriteLine( output.ToString());
           Console.ReadKey();
        }
我仍然可以看到XML声明,即

<?xml version='1.0'?>
它说InvalidOperationException未处理。
你能解释一下吗?我没有完全了解情况。

Set
ws.OmitXmlDeclaration=true来省略xml声明

static void Main(string[] args)
{
        StringBuilder output = new StringBuilder();

        String xmlString =
                @"<?xml version='1.0'?>
<!-- This is a sample XML document -->
<Items>
  <Item>test with a child element <more/> stuff</Item>
</Items>";
        // Create an XmlReader
        using (XmlReader reader = XmlReader.Create(new StringReader(xmlString)))
        {
            XmlWriterSettings ws = new XmlWriterSettings();
            ws.OmitXmlDeclaration = true;
            ws.Indent = true;
            using (XmlWriter writer = XmlWriter.Create(output, ws))
            {

                // Parse the file and display each of the nodes.
                while (reader.Read())
                {
                    switch (reader.NodeType)
                    {
                        case XmlNodeType.Element:
                            writer.WriteStartElement(reader.Name);
                            break;
                        case XmlNodeType.Text:
                            writer.WriteString(reader.Value);
                            break;
                        //case XmlNodeType.XmlDeclaration:
                        case XmlNodeType.ProcessingInstruction:
                            writer.WriteProcessingInstruction(reader.Name, reader.Value);
                            break;
                        case XmlNodeType.Comment:
                            writer.WriteComment(reader.Value);
                            break;
                        case XmlNodeType.EndElement:
                            writer.WriteFullEndElement();
                            break;
                    }
                }

            }
        }
       Console.WriteLine( output.ToString());
       Console.ReadKey();
    }
static void Main(字符串[]args)
{
StringBuilder输出=新的StringBuilder();
字符串xmlString=
@"
使用子元素进行测试
";
//创建一个XmlReader
使用(XmlReader=XmlReader.Create(新StringReader(xmlString)))
{
XmlWriterSettings ws=新的XmlWriterSettings();
ws.OmitXmlDeclaration=true;
ws.Indent=true;
使用(XmlWriter=XmlWriter.Create(输出,ws))
{
//解析文件并显示每个节点。
while(reader.Read())
{
开关(reader.NodeType)
{
case XmlNodeType.Element:
writer.writeStart元素(reader.Name);
打破
案例XmlNodeType.Text:
writer.WriteString(reader.Value);
打破
//案例XmlNodeType.XmlDeclaration:
案例XmlNodeType.ProcessingInstruction:
writer.WriteProcessingInstruction(reader.Name,reader.Value);
打破
案例XmlNodeType.Comment:
writer.WriteComment(reader.Value);
打破
案例XmlNodeType.EndElement:
writer.writeFileLendElement();
打破
}
}
}
}
Console.WriteLine(output.ToString());
Console.ReadKey();
}

Set
ws.OmitXmlDeclaration=true来省略xml声明

static void Main(string[] args)
{
        StringBuilder output = new StringBuilder();

        String xmlString =
                @"<?xml version='1.0'?>
<!-- This is a sample XML document -->
<Items>
  <Item>test with a child element <more/> stuff</Item>
</Items>";
        // Create an XmlReader
        using (XmlReader reader = XmlReader.Create(new StringReader(xmlString)))
        {
            XmlWriterSettings ws = new XmlWriterSettings();
            ws.OmitXmlDeclaration = true;
            ws.Indent = true;
            using (XmlWriter writer = XmlWriter.Create(output, ws))
            {

                // Parse the file and display each of the nodes.
                while (reader.Read())
                {
                    switch (reader.NodeType)
                    {
                        case XmlNodeType.Element:
                            writer.WriteStartElement(reader.Name);
                            break;
                        case XmlNodeType.Text:
                            writer.WriteString(reader.Value);
                            break;
                        //case XmlNodeType.XmlDeclaration:
                        case XmlNodeType.ProcessingInstruction:
                            writer.WriteProcessingInstruction(reader.Name, reader.Value);
                            break;
                        case XmlNodeType.Comment:
                            writer.WriteComment(reader.Value);
                            break;
                        case XmlNodeType.EndElement:
                            writer.WriteFullEndElement();
                            break;
                    }
                }

            }
        }
       Console.WriteLine( output.ToString());
       Console.ReadKey();
    }
static void Main(字符串[]args)
{
StringBuilder输出=新的StringBuilder();
字符串xmlString=
@"
使用子元素进行测试
";
//创建一个XmlReader
使用(XmlReader=XmlReader.Create(新StringReader(xmlString)))
{
XmlWriterSettings ws=新的XmlWriterSettings();
ws.OmitXmlDeclaration=true;
ws.Indent=true;
使用(XmlWriter=XmlWriter.Create(输出,ws))
{
//解析文件并显示每个节点。
while(reader.Read())
{
开关(reader.NodeType)
{
case XmlNodeType.Element:
writer.writeStart元素(reader.Name);
打破
案例XmlNodeType.Text:
writer.WriteString(reader.Value);
打破
//案例XmlNodeType.XmlDeclaration:
案例XmlNodeType.ProcessingInstruction:
writer.WriteProcessingInstruction(reader.Name,reader.Value);
打破
案例XmlNodeType.Comment:
writer.WriteComment(reader.Value);
打破
案例XmlNodeType.EndElement:
writer.writeFileLendElement();
打破
}
}
}
}
Console.WriteLine(output.ToString());
Console.ReadKey();
}

Set
ws.OmitXmlDeclaration=true来省略xml声明

static void Main(string[] args)
{
        StringBuilder output = new StringBuilder();

        String xmlString =
                @"<?xml version='1.0'?>
<!-- This is a sample XML document -->
<Items>
  <Item>test with a child element <more/> stuff</Item>
</Items>";
        // Create an XmlReader
        using (XmlReader reader = XmlReader.Create(new StringReader(xmlString)))
        {
            XmlWriterSettings ws = new XmlWriterSettings();
            ws.OmitXmlDeclaration = true;
            ws.Indent = true;
            using (XmlWriter writer = XmlWriter.Create(output, ws))
            {

                // Parse the file and display each of the nodes.
                while (reader.Read())
                {
                    switch (reader.NodeType)
                    {
                        case XmlNodeType.Element:
                            writer.WriteStartElement(reader.Name);
                            break;
                        case XmlNodeType.Text:
                            writer.WriteString(reader.Value);
                            break;
                        //case XmlNodeType.XmlDeclaration:
                        case XmlNodeType.ProcessingInstruction:
                            writer.WriteProcessingInstruction(reader.Name, reader.Value);
                            break;
                        case XmlNodeType.Comment:
                            writer.WriteComment(reader.Value);
                            break;
                        case XmlNodeType.EndElement:
                            writer.WriteFullEndElement();
                            break;
                    }
                }

            }
        }
       Console.WriteLine( output.ToString());
       Console.ReadKey();
    }
static void Main(字符串[]args)
{
StringBuilder输出=新的StringBuilder();
字符串xmlString=
@"
使用子元素进行测试
";
//创建一个XmlReader
使用(XmlReader=XmlReader.Create(新StringReader(xmlString)))
{
XmlWriterSettings ws=新的XmlWriterSettings();
ws.OmitXmlDeclaration=true;
ws.Indent=true;
使用(XmlWriter=XmlWriter.Create(输出,ws))
{
//解析文件并显示每个节点。
while(reader.Read())
{
开关(reader.NodeType)
{
case XmlNodeType.Element:
writer.writeStart元素(reader.Name);
打破
案例XmlNodeType.Text:
writer.WriteString(reader.Value);
打破
//案例XmlNodeType.XmlDeclaration:
案例XmlNodeType.ProcessingInstruction:
writer.WriteProcessingInstruction(reader.Name,reader.Value);
打破
案例XmlNodeType.Comment:
writer.WriteComment(reader.Value);
打破
案例XmlNodeType.EndElement:
writer.writeFileLendElement();
打破
}
}
}
}
Console.WriteLine(output.ToString());
Console.ReadKey();
}

Set
ws.OmitXmlDeclaration=true来省略xml声明

static void Main(string[] args)
{
        StringBuilder output = new StringBuilder();

        String xmlString =
                @"<?xml version='1.0'?>
<!-- This is a sample XML document -->
<Items>
  <Item>test with a child element <more/> stuff</Item>
</Items>";
        // Create an XmlReader
        using (XmlReader reader = XmlReader.Create(new StringReader(xmlString)))
        {
            XmlWriterSettings ws = new XmlWriterSettings();
            ws.OmitXmlDeclaration = true;
            ws.Indent = true;
            using (XmlWriter writer = XmlWriter.Create(output, ws))
            {

                // Parse the file and display each of the nodes.
                while (reader.Read())
                {
                    switch (reader.NodeType)
                    {
                        case XmlNodeType.Element:
                            writer.WriteStartElement(reader.Name);
                            break;
                        case XmlNodeType.Text:
                            writer.WriteString(reader.Value);
                            break;
                        //case XmlNodeType.XmlDeclaration:
                        case XmlNodeType.ProcessingInstruction:
                            writer.WriteProcessingInstruction(reader.Name, reader.Value);
                            break;
                        case XmlNodeType.Comment:
                            writer.WriteComment(reader.Value);
                            break;
                        case XmlNodeType.EndElement:
                            writer.WriteFullEndElement();
                            break;
                    }
                }

            }
        }
       Console.WriteLine( output.ToString());
       Console.ReadKey();
    }
static void Main(字符串[]args)
{
StringBuilder输出=新的StringBuilder();
字符串xmlString=
@"
使用子元素进行测试
";
//创造