类似问题的答案对我没有帮助;或我缺少非常明显的东西。
我想将<value>
元素添加到XML的<question>
元素中,其结构如下:
<form>
<foo>
<bar>
<question id="1">...</question>
<question id="2">...</question>
</bar>
</foo>
</form>
其他问题似乎集中在将元素添加到根元素中,但是我试图根据属性值将我的元素进一步添加到树中。我尝试了以下无效的方法:
XDocument newFormTemplateXML = XDocument.Load("newFormTemplate.xml");
XElement newValue = new XElement("value", 123);
newFormTemplateXML
.Descendants()
.Where(d => d.Name.ToString().Equals("question") && d.Attribute("id").Equals(1))
.Append(newValue);
newFormTemplateXML.Save("test.xml");
我没有收到错误消息。有人可以在正确的道路上帮助我吗?
答案 0 :(得分:3)
使用“本机”方法:
newFormTemplateXML
.Descendants("question")
.Single(q => (int) q.Attribute("id") == 1)
.Add(newValue);
或者,对于XPath爱好者:
newFormTemplateXML.XPathSelectElement("//question[@id=1]").Add(newValue);
请注意,这并不能验证id
1确实只有一个问题,它只会修改第一个此类问题。 Single()
调用没有此问题/优点。
答案 1 :(得分:0)
Append并没有您认为的那样。 Append将新项目添加到序列的末尾,而您不想添加到后代。
this.input.keyboard.on('keydown', function (event) {
event.preventDefault();
event.stopImmediatePropagation();
//confirm menu when key code is back key
}