【发布时间】:2018-02-07 08:20:00
【问题描述】:
谁能帮助我?我对 C# 有点陌生,但到了那里。 我被设置了一项任务,即从 XML 文件中检索数据、更改数据并使用 Xpath 将其保存在另一个位置。
我认为我的代码“有点”是正确的,但我正在为特定元素路径的语法而苦苦挣扎。我已经包含了一个 XML 文件的示例,它已经过简化,但元素的布局是相同的。
<?xml version="1.0" encoding="utf-8"?>
<Data SomeData which linked to a wepage.>
<DeviceId>Sometext</DeviceId>
<Inputs>
<a:ImageInput>
<a:Cal>
<a:Volt1></Volt1>
<a:Volt2></Volt2>
</a:Cal>
<a:Name>Name1</a:Name>
</a:ImageInput>
<a:ImageInput>
<a:Cal>
<a:Volt1></Volt1>
<a:Volt2></Volt2>
</a:Cal>
<a:Name>Name2</a:Name> <!-- Need to change this element -->
</a:ImageInput>
</Inputs>
</Data>
如您所见,我需要在第二个 a:ImageInput 元素内更改 a:Name 元素。我一直在寻找答案,但我只找到了 Xpath 更改了根元素的一部分的示例。
这是我在 Main() 方法中使用的代码。
public static void ChangeFileXPath()//Changes the value of the node using Xpath
{
XmlDocument xmld = new XmlDocument();
xmld.Load(@"C:\ProgramData\Oxford Instruments NanoAnalysis\Calibration\mics_simulator.xml");
XmlElement name2 = (XmlElement)xmld.SelectSingleNode("/MicsModule/Inputs/a:ImageInput[@a:Name='BSE']");
if (name2 != null)
{
name2.SetAttribute("a:Name", "{{16}}");
}
string AmmendedFile = @"C:\ProgramData\Oxford Instruments NanoAnalysis\XXXX NewXMLReader\Xpath_Mics_Sim.xml";
xmld.Save(AmmendedFile);
}
任何帮助将不胜感激。谢谢你的关注。
【问题讨论】:
-
PS..如果这个问题看起来很垃圾,我很抱歉 StackOverflow。我是新手!!
-
请编辑问题以删除代码图像并替换为文本(格式化为代码)。
-
那个 xml 似乎缺少
a前缀的命名空间定义。请提供有效的 XML。您是绑定到 XmlDocument 还是也可以使用 XDocument 代替?这会让你的生活更轻松。 -
@rene 我绑定到 XmlDocument,我无法提供原始 xml 文档,因为它有很多公司资料,我不想让网络看到它。我提供的 xml 图片是完全相同的布局,但我在标签之间遗漏了一些公司信息。 xml 缺少什么命名空间定义?我不确定。
-
@D.Bodd85
SomeData which linked to a wepage可能是a的命名空间定义。
标签: c# xml xpath visual-studio-2017