我需要将XML字符串转换为XmlElement

Dea*_*ean 58 c# xml type-conversion

我正在寻找最简单的方法将包含有效XML的字符串转换为XmlElementC#中的对象.

你怎么能把它变成一个XmlElement

<item><name>wrench</name></item>
Run Code Online (Sandbox Code Playgroud)

Ali*_*tad 96

用这个:

private static XmlElement GetElement(string xml)
{
    XmlDocument doc = new XmlDocument();
    doc.LoadXml(xml);
    return doc.DocumentElement;
}
Run Code Online (Sandbox Code Playgroud)

谨防!!如果您需要首先将此元素添加到另一个文档,则需要使用它来导入它ImportNode.

  • @Jimmy Hoffa:IIRC LoadXml采用任何格式良好的XML片段,它在顶层只包含一个XML元素.不需要在开头的`<?xml`. (2认同)

小智 19

假设您已经有一个带有子节点的XmlDocument,并且您需要从字符串添加更多子元素.

XmlDocument xmlDoc = new XmlDocument();
// Add some child nodes manipulation in earlier
// ..

// Add more child nodes to existing XmlDocument from xml string
string strXml = 
  @"<item><name>wrench</name></item>
    <item><name>screwdriver</name></item>";
XmlDocumentFragment xmlDocFragment = xmlDoc.CreateDocumentFragment();
xmlDocFragment.InnerXml = strXml;
xmlDoc.SelectSingleNode("root").AppendChild(xmlDocFragment);
Run Code Online (Sandbox Code Playgroud)

结果:

<root>
  <item><name>this is earlier manipulation</name>
  <item><name>wrench</name></item>
  <item><name>screwdriver</name>
</root>
Run Code Online (Sandbox Code Playgroud)


dtb*_*dtb 14

使用XmlDocument.LoadXml:

XmlDocument doc = new XmlDocument();
doc.LoadXml("<item><name>wrench</name></item>");
XmlElement root = doc.DocumentElement;
Run Code Online (Sandbox Code Playgroud)

(或者如果你在谈论XElement,请使用XDocument.Parse :)

XDocument doc = XDocument.Parse("<item><name>wrench</name></item>");
XElement root = doc.Root;
Run Code Online (Sandbox Code Playgroud)

  • 他想要元素,而对于 XElement,他可以只执行 XElement.Parse(xmlString),但是您给他的是文档而不是元素。 (2认同)