小弟在做个winform项目,有地方需要载入XML
写了一些方法但是出错
Warning 16 Could not find file 'C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\xml\CameraInfo.xml'. 0 0
具体代码
CameraUiModel model=new CameraUiModel() ;
CameraInfo cameraInfo = new CameraInfo();
public ucCamera()
{
InitializeComponent(); }
private void ucCamera_Load(object sender, EventArgs e)
{
try
{ model=new CameraUiModel{
cbxAnalysis=this.cbxAnalysis,
cbxChannel=this.cbxChannel,
cbxFormat=this.cbxFormat,
cbxType=this.cbxType,
txtCameraName=this.txtCameraName,
txtIP=this.txtIP,
txtAdminName=this.txtAdminName,
txtPassWord=this.txtPassword,
txtPort=this.txtPort,
txtArea=this.txtArea,
txtHeight=this.txtHeight,
txtWidth=this.txtWidth};
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
InitConfig();
} void InitConfig()
{ string filepath = Application.StartupPath + "\\xml\\CameraInfo.xml"; ConvertXmlFileToObject converter = new ConvertXmlFileToObject(filepath); cameraInfo = converter.XmlToCameraInfo(); model.cbxAnalysis.Text = cameraInfo.SystemAnalysis;
model.cbxChannel.Text = cameraInfo.Channel;
model.txtCameraName.Text = cameraInfo.CameraName;
model.txtIP.Text = cameraInfo.Ip;
model.txtAdminName.Text = cameraInfo.User;
model.txtPort.Text = cameraInfo.Port;
model.txtPassWord.Text = cameraInfo.Password;
model.txtArea.Text = cameraInfo.AreaName;
model.cbxFormat.Text = cameraInfo.Format;
model.cbxType.Text = cameraInfo.Type;
model.txtHeight.Text = cameraInfo.Height;
model.txtWidth.Text = cameraInfo.Width;
}
XMLIDEVisual Studio
写了一些方法但是出错
Warning 16 Could not find file 'C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\xml\CameraInfo.xml'. 0 0
具体代码
CameraUiModel model=new CameraUiModel() ;
CameraInfo cameraInfo = new CameraInfo();
public ucCamera()
{
InitializeComponent(); }
private void ucCamera_Load(object sender, EventArgs e)
{
try
{ model=new CameraUiModel{
cbxAnalysis=this.cbxAnalysis,
cbxChannel=this.cbxChannel,
cbxFormat=this.cbxFormat,
cbxType=this.cbxType,
txtCameraName=this.txtCameraName,
txtIP=this.txtIP,
txtAdminName=this.txtAdminName,
txtPassWord=this.txtPassword,
txtPort=this.txtPort,
txtArea=this.txtArea,
txtHeight=this.txtHeight,
txtWidth=this.txtWidth};
}
catch(Exception ex)
{
MessageBox.Show(ex.ToString());
}
InitConfig();
} void InitConfig()
{ string filepath = Application.StartupPath + "\\xml\\CameraInfo.xml"; ConvertXmlFileToObject converter = new ConvertXmlFileToObject(filepath); cameraInfo = converter.XmlToCameraInfo(); model.cbxAnalysis.Text = cameraInfo.SystemAnalysis;
model.cbxChannel.Text = cameraInfo.Channel;
model.txtCameraName.Text = cameraInfo.CameraName;
model.txtIP.Text = cameraInfo.Ip;
model.txtAdminName.Text = cameraInfo.User;
model.txtPort.Text = cameraInfo.Port;
model.txtPassWord.Text = cameraInfo.Password;
model.txtArea.Text = cameraInfo.AreaName;
model.cbxFormat.Text = cameraInfo.Format;
model.cbxType.Text = cameraInfo.Type;
model.txtHeight.Text = cameraInfo.Height;
model.txtWidth.Text = cameraInfo.Width;
}
XMLIDEVisual Studio
Application.StartupPath 换成AppDomain.CurrentDomain.BaseDirectory试试
这个路径是存在的,但是里面没有放.xml文件,我已经指向程序目录了啊,为什么回到这里要文件
因为这两句,你这里filepath 为 C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\xml\CameraInfo.xml,下面用new创建ConvertXmlFileToObject的时候又找不到相应的文件自然就报错了啊
Console.WriteLine(System.IO.Path.GetDirectoryName(assemblyFilePath));自己看MSDN
http://msdn.microsoft.com/zh-cn/library/system.windows.forms.application.startuppath.aspxThe path for the executable file that started the application.
启动了应用程序的可执行文件的路径。你用的VS调试的程序吧?所以可执行文件就是devenv.exe,他启动了你的应用程序app.vshost.exe
string filepath = @"./xml/CameraInfo.xml";
if(System.IO.File.Exists(filepath))
{
操作.....
}
else
{
提标.....
}
你先判断一下文件是否存在
Application.StartupPath 这个才是取程序路径,你后面不是还有 + "\\xml\\CameraInfo.xml"么。加上以后就变成文件全路径了啊