【发布时间】:2017-12-20 10:25:25
【问题描述】:
我的 XML
<example>
<ReferenceNumber xmlns="http://www.example.com/schemas/core/movement">
<Mnemonic>LHH1</Mnemonic>
<MovementProjectNumber>4743</MovementProjectNumber>
<MovementVersion>5</MovementVersion>
</ReferenceNumber>
</example>
// 获取运动版本值(5).
XDocument NewXML = XDocument.Parse(model.ReturnXML); // model.ReturnXML has XML as shown in above XML.
XNamespace ns = "http://www.example.com/schemas/core/movement";
var MovementVersionNew = from MovVer in NewXML.Root.Element(ns + "ReferenceNumber").Elements(ns + "MovementVersion")
select MovVer.Value.ToList().FirstOrDefault().ToString();
//获取XML节点部分以更新MovementVersion元素的值。
var MovementVersionRef = (from MovVer in NewXML.Root.Elements(ns + "ReferenceNumber")
select MovVer).ToList();
// 设置 MovementVersion 值为 null。
foreach (XElement element in MovementVersionRef.Descendants())
{
if (!element.HasElements)
{
if (element.Name.ToString().Contains("MovementVersion"))
{
element.SetValue("");
}
}
}
上面的代码会将 MovementVersion 值设置为 null(在 NewXML 中),这是正确的,但同时它也在更改 MovementVersionNew 变量的值(我不希望这个从 5 更改为 null)。
我可以更改或使用什么来不更改旧值,因为我希望稍后在代码中使用该值。请帮我。提前致谢。
【问题讨论】:
-
必须重新评估行设置 MovementVersionNew。在那里放置一个断点并查看堆栈跟踪以查看导致它运行的原因
-
感谢@LordWilmore 我检查并发现它在 element.SetValue("") 执行后得到更新。那么可以为此做些什么呢?。
-
当您说“之后”时,您的意思是什么。你的意思是调用 SetValue("") 的结果,还是仅仅来自代码中的其他地方?
-
我的意思是调用 SetValue("")
标签: c# xml linq xmldocument