我正在编写一个应用程序,它从几个不同的XML文件中获取数据并将它们移动到一个文件中。但是,当我尝试这样做时,它什么也没写。我的代码如下:
XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(xsh);
XmlElement dataElm = xdoc.CreateElement(@"rs:data");
string contents = "";
foreach (var i in Numbers.GetWSnumber())
{
string curFile = @"\\wwproduction02\public2\Software\PMStatus\Status\WS" + i.WeaverSetId + ".xml";
if (File.Exists(curFile))
{
System.IO.StreamReader file = new System.IO.StreamReader(curFile);
while ((contents = file.ReadLine()) != null)
{
dataElm.InnerText = contents;
xdoc.DocumentElement.AppendChild(dataElm);
}
}
}
xdoc.Save("doc.xml");
我想要实现的XML的格式是
<xml>
<Schema>
schema data in here
</Schema>
<rs:data>
XML from other files here
</rs:data>
</xml>
架构很好,并且由其他东西处理。 任何帮助都表示赞赏。谢谢。
答案 0 :(得分:0)
我没有看到任何明显的东西,但我的直接想法/怀疑是你没有在磁盘上找到你的XML文件。尝试添加一个else子句并注销(通过log4net或其他方法)一个未找到当前文件的语句,如下所示:
if (File.Exists(curFile))
{
System.IO.StreamReader file = new System.IO.StreamReader(curFile);
while ((contents = file.ReadLine()) != null)
{
dataElm.InnerText = contents;
xdoc.DocumentElement.AppendChild(dataElm);
}
}
else
{
// log statement that file curFile was not found
}
<强>更新强>
您没有关闭System.IO.StreamReader
。虽然我不相信这会导致您的问题,但您绝对不希望I / O读者不知所措。
答案 1 :(得分:0)
首先要做的是在调试器下单步执行代码,看看它在做什么。可能是它没有找到任何要处理的数据。 (例如,Numbers不返回任何内容,curFile不存在,或者curFile不包含任何数据行)。或者,程序在尝试处理任何事情之前很久就会抛出异常。
使用调试器检查您的代码是否按照您的预期执行。
您还要将引用附加到文档的XML元素中。 然后你改变它的InnerText,并重新添加相同的引用,所以文档可能会忽略你。
每次需要时都尝试创建新的XMLElement,而不是重复使用单个XMLElement。即在内部块中一起完成所有这些:
XmlElement dataElm = xdoc.CreateElement(@"rs:data");
dataElm.InnerText = contents;
xdoc.DocumentElement.AppendChild(dataElm);