我使用以下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但仍然出错。说必须初始化隐含类型的变量。有人能告诉我我做错了什么。
我有更简单的方法吗?
我发布了这个问题:How can I extract one element of data out of an XML file on my Windows desktop?
但答案只是使用XmlReader。我不确定从哪里开始。我想将另一个问题标记为已回答,但没有人回答。
答案 0 :(得分:3)
代码中的问题与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);
然后,您可以在文档中找到特定元素等。有关详细信息,请参阅LINQ to XML "root" page on MSDN。
答案 1 :(得分:0)
实际上在这个示例中,您必须添加writer.Flush();在while(reader.Read())循环结束时,outpout保持为空。 在显示输出值之后,将代码更改为:Console.WriteLine(output.ToString());