C# 在SVG(XML)中的现有元素之后插入新元素

C# 在SVG(XML)中的现有元素之后插入新元素,c#,svg,xml-parsing,C#,Svg,Xml Parsing,我想在现有元素之后插入一个元素。例如,在这个简单的XML文件中,我想在“defs”元素之后插入一个元素 当我运行代码时,XElements root和defs为null,因此自然是defs.AddAfterSelf(xE)行;抛出对象引用未设置错误 欢迎提供任何指导。尝试使用名称空间 var ns = _XML_Doc.Root.Name.Namespace; XElement root = _XML_Doc.Element(ns +"svg"); XElement defs = root.El

我想在现有元素之后插入一个元素。例如,在这个简单的XML文件中,我想在“defs”元素之后插入一个元素

当我运行代码时,XElements root和defs为null,因此自然是defs.AddAfterSelf(xE)行;抛出对象引用未设置错误


欢迎提供任何指导。

尝试使用名称空间

var ns = _XML_Doc.Root.Name.Namespace;
XElement root = _XML_Doc.Element(ns +"svg");
XElement defs = root.Element(ns + "defs");
defs.AddAfterSelf(xE);
_XML_Doc.Root
  .DescendantsAndSelf()
  .Elements()
  .Single(d => d.Name.LocalName == "defs")
  .AddAfterSelf(xE);
或者忽略名称空间

var ns = _XML_Doc.Root.Name.Namespace;
XElement root = _XML_Doc.Element(ns +"svg");
XElement defs = root.Element(ns + "defs");
defs.AddAfterSelf(xE);
_XML_Doc.Root
  .DescendantsAndSelf()
  .Elements()
  .Single(d => d.Name.LocalName == "defs")
  .AddAfterSelf(xE);

什么是解析器类的构造函数中的
\u XML\u Doc
:\u XML\u Doc=XDocument.Load(\u FilePath);实际上,这导致它在XElement defs=root.Element(“defs”)行中爆炸;root也是空的,代码也是:/是的,我看到它被加载到了调试器中。啊!名称空间。每次都让我抓狂。现在就试试。很高兴能帮上忙