繁体   English   中英

使用 XDocument 在特定点添加元素?

[英]Add an element at a specific point with XDocument?

我想在某个点添加一个元素。 请参阅代码中的注释。

<Country>
  <State>
    <Coordinate point="foo" /> <!-- That worked.-->
    <Cali>
        <Coordinate point="bar" /> <!-- How does that work in this case?-->
    </Cali>
  </State>
</Country>

到目前为止我的代码:

var doc = XDocument.Load(test.xml);
var coordinateElement = new XElement("Coordinate");
coordinateElement.Add(new XAttribute("point", "foo"));

doc.Root.Element("State").Add(coordinateElement);
doc.Save(test.xml);

<State>之后添加元素<Coordinate>效果很好。

但是当我想在<Cali>之后添加它...

var doc = XDocument.Load(test.xml);
var coordinateElement = new XElement("Coordinate");
coordinateElement.Add(new XAttribute("point", "bar"));

doc.Element("State").Add(coordinateElement);
doc.Save(test.xml);

我收到以下错误:“对象引用未设置为 object 的实例。”

正如伟大的Jon Skeet指出的那样,在您的第二个声明中, doc缺少Root ,以防止 null 参考。

此外 Element 只查看直接子节点,因此您首先需要到达State节点,然后到达Cali节点。 总而言之,它应该看起来像这样:

doc.Root.Element("State").Element("Cali").Add(coordinateElement);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM