将 XML 插入到 XML 文档
Inserting XML to XMLDocument
我的XML如下:
<School>
<ClassA>
<Students>
<Student>
<Name>AB</Name>
<Score>90</Score>
</Student>
</Students>
</ClassA>
</School>
正在将 XML 加载到 XmlDocument
XmlDocument xmlRequest = new XmlDocument();
xmlRequest.LoadXml(myXML);
现在读取 LINQ 中的记录数组并动态创建 XML
var xmlSubjects = new XElement("subjects",
from c in arrySubjects
select new XElement("subject",
new XElement("English", c.English),
new XElement("Social", c.Social)
));
从上面我正在下面 XML:
<Subjects>
<Subject>
<English>L Author</English>
<Social>M Author</Social>
</Subject>
</Subjects>
我想将此 XML 添加到我的父级 XML 中。我尝试使用以下代码
XmlNode xElt = xmlRequest.SelectSingleNode("//ClassA");
XmlElement xNewChild = xmlRequest.CreateElement(xmlSubjects.ToString());
xmlRequest.DocumentElement.InsertAfter(xNewChild, xElt);
我需要帮助将我的 XML 字符串添加为 ClassA 的第一个元素。
决赛 XML:
<School>
<ClassA>
<Subjects>
<Subject>
<English>L Author</English>
<Social>M Author</Social>
</Subject>
</Subjects>
<Students>
<Student>
<Name>AB</Name>
<Score>90</Score>
</Student>
</Students>
</ClassA>
</School>
请帮帮我。
我不确定你为什么要在这里混用 XmlDocument
和 XDocument
。我会使用 XDocument
:
解析原始 XML
var doc = XDocument.Parse(myXML);
然后您可以找到要插入的元素并添加您的新主题:
var classA = doc.Descendants("ClassA").First();
classA.AddFirst(xmlSubjects);
我不建议将 XmlDocument
和 XDocument
API 混合在一起,因为生成的代码将难以理解和维护,并且还可能由于两种表示之间的转换而出现性能问题. (也许您受限于遗留代码限制?)
也就是说,您可以将 XElement xmlSubjects
流式传输到 <ClassA>
元素的 XmlNode
表示中,如下所示:
XmlNode xElt = xmlRequest.SelectSingleNode("//ClassA");
using (var writer = xElt.CreateNavigator().PrependChild())
using (var reader = xmlSubjects.CreateReader())
{
writer.WriteNode(reader, false);
}
试试这个:
XmlDocumentFragment xmlfrag = xmlRequest.CreateDocumentFragment();
xmlfrag.InnerXml = xmlSubjects ;
xmlRequest.DocumentElement.InsertAfter(xmlfrag,xmlRequest.DocumentElement.FirstChild);
我的XML如下:
<School>
<ClassA>
<Students>
<Student>
<Name>AB</Name>
<Score>90</Score>
</Student>
</Students>
</ClassA>
</School>
正在将 XML 加载到 XmlDocument
XmlDocument xmlRequest = new XmlDocument();
xmlRequest.LoadXml(myXML);
现在读取 LINQ 中的记录数组并动态创建 XML
var xmlSubjects = new XElement("subjects",
from c in arrySubjects
select new XElement("subject",
new XElement("English", c.English),
new XElement("Social", c.Social)
));
从上面我正在下面 XML:
<Subjects>
<Subject>
<English>L Author</English>
<Social>M Author</Social>
</Subject>
</Subjects>
我想将此 XML 添加到我的父级 XML 中。我尝试使用以下代码
XmlNode xElt = xmlRequest.SelectSingleNode("//ClassA");
XmlElement xNewChild = xmlRequest.CreateElement(xmlSubjects.ToString());
xmlRequest.DocumentElement.InsertAfter(xNewChild, xElt);
我需要帮助将我的 XML 字符串添加为 ClassA 的第一个元素。
决赛 XML:
<School>
<ClassA>
<Subjects>
<Subject>
<English>L Author</English>
<Social>M Author</Social>
</Subject>
</Subjects>
<Students>
<Student>
<Name>AB</Name>
<Score>90</Score>
</Student>
</Students>
</ClassA>
</School>
请帮帮我。
我不确定你为什么要在这里混用 XmlDocument
和 XDocument
。我会使用 XDocument
:
var doc = XDocument.Parse(myXML);
然后您可以找到要插入的元素并添加您的新主题:
var classA = doc.Descendants("ClassA").First();
classA.AddFirst(xmlSubjects);
我不建议将 XmlDocument
和 XDocument
API 混合在一起,因为生成的代码将难以理解和维护,并且还可能由于两种表示之间的转换而出现性能问题. (也许您受限于遗留代码限制?)
也就是说,您可以将 XElement xmlSubjects
流式传输到 <ClassA>
元素的 XmlNode
表示中,如下所示:
XmlNode xElt = xmlRequest.SelectSingleNode("//ClassA");
using (var writer = xElt.CreateNavigator().PrependChild())
using (var reader = xmlSubjects.CreateReader())
{
writer.WriteNode(reader, false);
}
试试这个:
XmlDocumentFragment xmlfrag = xmlRequest.CreateDocumentFragment();
xmlfrag.InnerXml = xmlSubjects ;
xmlRequest.DocumentElement.InsertAfter(xmlfrag,xmlRequest.DocumentElement.FirstChild);