// return: // -1 error // 0 normal // 1 reach file end。strXml中无内容 public int GetOneDocument( out string strXml, out string strError) { strError = ""; strXml = ""; if (this.Stop == true) { strError = "用户中断"; return -1; } try { bool bRet = false; while (m_reader.Name != "document") { // REDO: while (true) { bRet = m_reader.Read(); if (bRet == false) return 1; if (m_reader.NodeType == XmlNodeType.Element) break; } if (bRet == false) return 1; // 结束 /* if (m_reader.Name != "document") goto REDO; * */ } strXml = m_reader.ReadOuterXml(); if (this.SetProgress != null) { SetProgressEventArgs e = new SetProgressEventArgs(); e.Start = 0; e.End = m_file.Length; e.Value = m_file.Position; // Debug.WriteLine(m_file.Position.ToString()); this.SetProgress(this, e); } return 0; } catch (Exception ex) { strError = "读取XML文件 '" + this.XmlFilename + "' 时发生错误: " + ex.Message; return -1; } }
public int Open(string strInputFileName, out string strError) { strError = ""; try { m_file = File.Open(strInputFileName, FileMode.Open, FileAccess.Read); } catch (Exception ex) { strError = "打开文件 " + strInputFileName + " 失败: " + ex.Message; return -1; } if (this.SetProgress != null) { SetProgressEventArgs e = new SetProgressEventArgs(); e.Start = 0; e.End = m_file.Length; e.Value = -1; this.SetProgress(this, e); } this.XmlFilename = strInputFileName; this.m_reader = new XmlTextReader(m_file); while (true) { bool bRet = m_reader.Read(); if (bRet == false) { strError = "没有根元素"; return -1; } if (m_reader.NodeType == XmlNodeType.Element) break; } string strPageSettingXml = ""; // return: // -1 error // 0 normal // 1 reach file end。strXml中无内容 int nRet = GetPageSetting( out strPageSettingXml, out strError); if (nRet == -1) return -1; if (nRet == 0) { this.m_pagesetting = new PageSetting(); nRet = this.m_pagesetting.Build(strPageSettingXml, out strError); if (nRet == -1) return -1; } else { this.m_pagesetting = null; // 表示XML文件中没有定义 } /* m_reader.Close(); m_file = File.Open(strInputFileName, FileMode.Open, FileAccess.Read); * */ m_file.Position = 0; this.m_reader = new XmlTextReader(m_file); this.m_nPageNo = 0; this.m_pages.Clear(); this.EOF = false; return 0; }
void document_SetProgress(object sender, SetProgressEventArgs e) { Application.DoEvents(); if (e.Value == -1) { this.estimate.SetRange(e.Start, e.End); this.stop.SetProgressRange(e.Start, e.End); this.progressBar_records.Minimum = (int)e.Start; this.progressBar_records.Maximum = (int)e.End; } else { if ((this.m_lCount++ % 10) == 1) this.stop.SetMessage("剩余时间 " + ProgressEstimate.Format(this.estimate.Estimate(e.Value)) + " 已经过时间 " + ProgressEstimate.Format(this.estimate.delta_passed)); this.stop.SetProgressValue(e.Value); // this.stop.SetMessage(e.Value.ToString() + " - " + (((double)e.Value / (double)e.End) * 100).ToString() + "%"); this.progressBar_records.Value = (int)e.Value; } }