C# 4.0 在指定的标记处向XML文档插入XML

C# 4.0 在指定的标记处向XML文档插入XML,c#-4.0,linq-to-xml,C# 4.0,Linq To Xml,我正在研究XML,希望在父XML中插入以下XML标记: 这将在放学后立即插入主题元素。那么如何在特定路径插入。在本例中,在ClassA元素下 请在此帮助我。您需要使用GetElementByName或某些方法来获取ClassA节点: XmlNode xNode = xmlRequest.SelectSingleNode("School/ClassA"); 然后将主题添加为新的子节点: XmlNode newNode = xmlRequest.CreateNode(XmlNodeType.Ele

我正在研究XML,希望在父XML中插入以下XML标记:

这将在放学后立即插入主题元素。那么如何在特定路径插入。在本例中,在ClassA元素下


请在此帮助我。

您需要使用GetElementByName或某些方法来获取ClassA节点:

XmlNode xNode = xmlRequest.SelectSingleNode("School/ClassA");
然后将主题添加为新的子节点:

XmlNode newNode = xmlRequest.CreateNode(XmlNodeType.Element, "Subject", Nothing);
xNode.AppendChild(newNode);
如果要将其添加到特定位置,请枚举父节点和现有节点,然后使用InsertBefore:

XmlNode xNode = xmlRequest.SelectSingleNode("School/ClassA");
XmlNode siblingNode = xmlRequest.SelectSingleNode("School/ClassA/Students");
XmlNode newNode = xmlRequest.CreateNode(XmlNodeType.Element, "Subject", Nothing);
xNode.InsertBefore(xNode, xSibling);

但它会在学生标记之后插入主题标记。我想把它作为ClassAIt的第一个子项插入,它是第一个子项还是第二个子项并不重要,除非你盲目地使用索引来查找子项而不是名称。无论如何,在添加它之后,您可以使用InsertBefore更改Students和Subject元素的位置,其中
xNode
是您创建的新节点,这将把它移到上一个同级节点之上:
XmlNode xNode=XmlNode=xmlConfig.SelectSingleNode(XPath);XmlNode xSibling=xNode.PreviousSibling;XmlNode xParent=xNode.ParentNode;xParent.InsertBefore(xNode,xSibling)此外,如果您想要非常具体的结果,请确保获得问题中的所有条件。问题只要求它位于ClassA节点下,而不是要求它必须是ClassA节点中的第一个子节点。谢谢。下一次我会问你一个问题。它适用于您想要查找的meSo(例如,选择SingleNode(“School/ClassA/Students”),然后调用它的InsertBefore方法。。。
XmlDocument xmlRequest = new XmlDocument();
 xmlRequest.LoadXml(parentXML);
 XmlDocumentFragment xmlfrag = xmlRequest.CreateDocumentFragment();
 xmlfrag.InnerXml = xmlSubjects;
 xmlRequest.DocumentElement.InsertBefore(xmlfrag,  xmlRequest.DocumentElement.FirstChild);
XmlNode xNode = xmlRequest.SelectSingleNode("School/ClassA");
XmlNode newNode = xmlRequest.CreateNode(XmlNodeType.Element, "Subject", Nothing);
xNode.AppendChild(newNode);
XmlNode xNode = xmlRequest.SelectSingleNode("School/ClassA");
XmlNode siblingNode = xmlRequest.SelectSingleNode("School/ClassA/Students");
XmlNode newNode = xmlRequest.CreateNode(XmlNodeType.Element, "Subject", Nothing);
xNode.InsertBefore(xNode, xSibling);