簡體   English   中英

如何讓XmlReader讀取C#中的XML數據

[英]How can I get XmlReader to read my XML data in C#

我正在使用以下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();
        }
    }
}

但這給我一個錯誤,指出OutputTextBlock不存在。

我試圖在此之前放置一個var,但仍然出現錯誤。 說隱式類型的變量必須被初始化。 有人可以告訴我我在做什么錯。

有沒有更簡單的方法可以做到這一點?

我發布了這個問題: 如何從Windows桌面上的XML文件中提取一個數據元素?

但是答案只是使用XmlReader。 我不太確定從哪里開始。 我想將另一個問題標記為已回答,但沒有人回答。

在你的代碼的問題無關,與XML -它只是它假定一個叫做變量的代碼示例OutputTextBlock 這表明該演示代碼是在WPF應用而不是控制台應用的上下文中編寫的。

如果僅將代碼更改為:

Console.WriteLine(output.ToString());

那你應該沒事的

但是,我強烈建議改用LINQ to XML和XDocument 讀取XML文檔非常簡單:

String xmlString = @"<?xml version='1.0'?>
    <!-- This is a sample XML document -->
    <Items>
      <Item>test with a child element <more/> stuff</Item>
    </Items>";
XDocument doc = XDocument.Parse(xmlString);

然后,您可以在文檔等中找到特定的元素。有關更多詳細信息,請從MSDN上的LINQ to XML“根”頁面開始

實際上,在此示例中,您必須添加writer.Flush();。 在while(reader.Read())循環結束時,否則outpout保持為空。 在顯示輸出值之后,將代碼更改為:Console.WriteLine(output.ToString());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM