想问一下关于xml的一个问题
funxu 2011-08-18 09:07:21 学了几种xml的读写方法,感觉够用了,但是最近突然发现一个问题,请大家稍稍帮忙看一下
XmlWriterSettings wset = new XmlWriterSettings();
wset.Indent = true;
using(XmlTextReader xReader = new XmlTextReader(@"d:\test.xml", XmlNodeType.Document, null))
{
xReader.WhitespaceHandling = WhitespaceHandling.None;
using (XmlWriter xWriter = XmlWriter.Create(@"d:\a.xml", wset))
{
xWriter.WriteNode(xReader, false);//在这里出现错误了,提示根节点数据无效
//“System.Xml.XmlException: Data at the root level is invalid. Line 1, position 1.”
xWriter.Flush();
}
}
主要想知道为什么会出现这种错误
//-----------------------------------------
于是写了个例子测了一下发现XmlNodeType.Document这个节点不知道该怎么写
private static void ReadXml(XmlReader reader)
{
try
{
// 解析文件,并显示每一个节点
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element:
if (reader.IsEmptyElement) // 空元素?
{
Console.WriteLine("<{0}/>", reader.Name);
}
else
{
Console.Write("<{0}", reader.Name);
if (reader.HasAttributes) // 属性?
{
while (reader.MoveToNextAttribute())
{
Console.Write(" {0}=\"{1}\"", reader.Name, reader.Value);
}
}
Console.WriteLine(">", reader.Name);
}
break;
case XmlNodeType.Text:
Console.WriteLine(reader.Value);
break;
case XmlNodeType.CDATA:
Console.WriteLine("<![CDATA[{0}]]>", reader.Value);
break;
case XmlNodeType.ProcessingInstruction:
Console.WriteLine("<?{0} {1}?>", reader.Name, reader.Value);
break;
case XmlNodeType.Comment:
Console.WriteLine("<!--{0}-->", reader.Value);
break;
case XmlNodeType.XmlDeclaration:
Console.WriteLine("<?xml version='1.0'?>");
break;
case XmlNodeType.Document:
Console.WriteLine("<document {0} [{1}]>", reader.Name, reader.Value);
break;
case XmlNodeType.DocumentType:
Console.WriteLine("<!DOCTYPE {0} [{1}]>", reader.Name, reader.Value);
break;
case XmlNodeType.EntityReference:
Console.WriteLine(reader.Name);
break;
case XmlNodeType.EndElement:
Console.WriteLine("</{0}>", reader.Name);
break;
}
}
}
catch (XmlException ex)
{
Console.WriteLine(ex.Message);
}
}
//-----------------------------------------
xml的结构
<?xml version="1.0" encoding="utf-8"?>
<document>
<root>
<Testclass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<TestProperty>privatestr</TestProperty>
</Testclass>
</root>
</document>
有哪位大侠能帮忙解释下为什么会出现上面的错误么?还有那个xmldocument在xml里该怎么写啊