Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.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# 如何让XmlReader在C中读取XML数据#_C#_Xml_Xmlreader - Fatal编程技术网

C# 如何让XmlReader在C中读取XML数据#

C# 如何让XmlReader在C中读取XML数据#,c#,xml,xmlreader,C#,Xml,Xmlreader,我使用以下Microsoft示例代码读取XML: namespace ConsoleApplication1 { class Program { static void Main(string[] args) { StringBuilder output = new StringBuilder(); String xmlString = @"<?xml

我使用以下Microsoft示例代码读取XML:

namespace ConsoleApplication1
{
    class Program
    {
        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;
                        }
                    }

                }
            }
            var OutputTextBlock.Text = output.ToString();
        }
    }
}
命名空间控制台应用程序1
{
班级计划
{
静态void Main(字符串[]参数)
{
StringBuilder输出=新的StringBuilder();
字符串xmlString=
@"
使用子元素进行测试
";
//创建一个XmlReader
使用(XmlReader=XmlReader.Create(新StringReader(xmlString)))
{
XmlWriterSettings ws=新的XmlWriterSettings();
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();
打破
}
}
}
}
var OutputTextBlock.Text=output.ToString();
}
}
}
但它给了我一个错误,说OutputExtBlock不存在

我试图在这之前放置一个var,但仍然得到一个错误。必须初始化隐式类型的变量。有人能告诉我我做错了什么吗

有没有更简单的方法可以让我这样做

我发布了这个问题:


但答案只是使用XmlReader。我真的不知道从哪里开始。我想将另一个问题标记为已回答,但没有人回答。

代码中的问题与XML无关-只是示例代码假设存在一个名为
OutputTextBlock
的变量。这表明演示代码是在WPF应用程序的上下文中编写的,而不是在控制台应用程序中编写的

如果您只是将代码更改为:

Console.WriteLine(output.ToString());
那你应该没事了

但是,我强烈建议使用LINQtoXML和
XDocument
。读取XML文档非常简单:

String xmlString=@”
使用子元素进行测试
";
XDocument doc=XDocument.Parse(xmlString);

然后,您可以在文档中找到特定元素等。有关更多详细信息,请从开始。

代码中的问题与XML无关-只是示例代码假定存在名为
OutputTextBlock
的变量。这表明演示代码是在WPF应用程序的上下文中编写的,而不是在控制台应用程序中编写的

如果您只是将代码更改为:

Console.WriteLine(output.ToString());
那你应该没事了

但是,我强烈建议使用LINQtoXML和
XDocument
。读取XML文档非常简单:

String xmlString=@”
使用子元素进行测试
";
XDocument doc=XDocument.Parse(xmlString);

然后,您可以在文档中找到特定元素等。有关更多详细信息,请从开始。

事实上,在本示例中,您必须添加writer.Flush();在while(reader.Read())循环结束时,Output保持为空。
在显示输出值之后,将代码更改为:Console.WriteLine(output.ToString())

事实上,在这个示例中,您必须添加writer.Flush();在while(reader.Read())循环结束时,Output保持为空。
在显示输出值之后,将代码更改为:Console.WriteLine(output.ToString())

你考虑使用<代码> xObjs吗?依我看,使用起来比使用
XmlReader
容易得多。谢谢——我甚至不知道XDocument。我以前从来没有这样做过。我来看看。我仍然希望有人能给我一个例子,让我开始。我完全不懂XML。您是否考虑过使用<代码> xObjs?依我看,使用起来比使用
XmlReader
容易得多。谢谢——我甚至不知道XDocument。我以前从来没有这样做过。我来看看。我仍然希望有人能给我一个例子,让我开始。我完全不懂XML。嗨,Jon。谢谢你的建议。我会研究一下你的建议。LINQ-to-XML和XDocument是一起使用的还是一个或另一个?@Gemma:
XDocument
是LINQ-to-XML API中的一种类型。谢谢Jon。我会把这个标记为正确的,然后去看看你的建议。嗨,乔恩。谢谢你的建议。我会研究一下你的建议。LINQ-to-XML和XDocument是一起使用的还是一个或另一个?@Gemma:
XDocument
是LINQ-to-XML API中的一种类型。谢谢Jon。我会把这个标记为正确的,然后去看看你的建议。