Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 创建供多个程序使用的XML文档C_C#_Xml_Visual Studio_Xpath - Fatal编程技术网

C# 创建供多个程序使用的XML文档C

C# 创建供多个程序使用的XML文档C,c#,xml,visual-studio,xpath,C#,Xml,Visual Studio,Xpath,快速概述我正在尝试做的事情。。。我创建了一个表单,当用户单击“添加”按钮时,它会弹出一个文件浏览器对话框,让用户选择一个文件 选择后,该文件将添加到XML文档和报告列表中 我认为删除按钮是不言自明的 我需要这个文件有能力被我创建的另一个程序读取,这样它就可以相应地获得正确的信息 我曾考虑使用一个数据集,但决定不使用,因为我需要xml文件的固定位置,如果我有一个数据集,我不知道用户计算机将把数据集的源放在哪里。这就是为什么我认为我应该跳过数据集,只是手动生成XML文件 唯一的问题是它是相当错误缠身

快速概述我正在尝试做的事情。。。我创建了一个表单,当用户单击“添加”按钮时,它会弹出一个文件浏览器对话框,让用户选择一个文件

选择后,该文件将添加到XML文档和报告列表中

我认为删除按钮是不言自明的

我需要这个文件有能力被我创建的另一个程序读取,这样它就可以相应地获得正确的信息

我曾考虑使用一个数据集,但决定不使用,因为我需要xml文件的固定位置,如果我有一个数据集,我不知道用户计算机将把数据集的源放在哪里。这就是为什么我认为我应该跳过数据集,只是手动生成XML文件

唯一的问题是它是相当错误缠身,我修复了一个错误,一个新的弹出。我当前遇到的错误发生在addButton方法中,并表示我无法访问XML文件,因为它已被另一个进程使用。尝试通过确保在访问之前关闭文件来修复此问题,但仍然没有成功

我使用常规的XmlDocument来读取和编辑列表中的项目,然后使用XPath添加一个全新的项目。下面是完整的代码和XML格式,但我现在要说,我对它不太满意,因为它非常不一致。所以我想我的主要问题是什么才是正确的方法

C代码 XML布局
非常感谢您的帮助。

在addbutton单击事件上有两个保存命令

doc.Save(@"C:\Users\Public\MEC\posReportList.xml");


猜测您只需要第二个,而第一个是重构工作的某种残余?

它们是两个不同的对象。我添加了doc.save,因为我在执行xd.save时遇到了一个使用中的文件错误,所以我认为这可能是因为我已经将其作为XmlDocument打开了。但我仍然得到一个错误。请尝试此操作,然后使用XDocument xd=XDocument。Load@posReportList.xml; 尽管如此,我还是不明白为什么要保存两次,它们可能是不同的对象,因为备份存储区是相同的,即posReportList.xml,实际上可以工作,而doc.save是不需要的。其实根本不需要,我只是想消除一些错误。试图解决一些纠结,但删除现在不起作用。。。给我几分钟的时间来弄清楚这是一个逻辑错误还是仅仅是语法错误。删除后,您将保存到@posReportList.xml,然而,在其他任何地方,您都将保存到c:\users\…\这可能是一个问题,这可能是下一个错误:P现在,在尝试删除前一行中的子元素时会发生错误,但我怀疑这是因为我需要对元素保存到xml文件的方式进行一些更改。
<Reports count="1"><!--Count will be updated as items are added-->
    <Report id="1">
        <Workbook>SomeBook.xlsx</Workbook>
        <Filepath>C:/SomePath</FilePath>
    </Report>
</Reports>
doc.Save(@"C:\Users\Public\MEC\posReportList.xml");
xd.Save(@"C:\Users\Public\MEC\posReportList.xml");