【发布时间】:2008-11-12 15:20:01
【问题描述】:
如果我有一个 xmlreader 实例,我如何使用它来读取其当前节点并最终得到一个 xmlElement 实例?
【问题讨论】:
-
你真的想要 XmlElement,而不是 XElement?
如果我有一个 xmlreader 实例,我如何使用它来读取其当前节点并最终得到一个 xmlElement 实例?
【问题讨论】:
未测试,但如何通过XmlDocument:
XmlDocument doc = new XmlDocument();
doc.Load(reader);
XmlElement el = doc.DocumentElement;
或者(从现在开始),例如:
doc.LoadXml(reader.ReadOuterXml());
但实际上我不喜欢这样...它无缘无故地强制执行额外的 xml-parse 步骤(CPU 成本更高的操作之一)。如果原件有问题,那么也许考虑一个子阅读器:
using (XmlReader subReader = reader.ReadSubtree())
{
XmlDocument doc = new XmlDocument();
doc.Load(subReader);
XmlElement el = doc.DocumentElement;
}
【讨论】:
假设你有 XmlDocument,你需要在其中附加新创建的 XmlElement:
XmlElement myElement;
myXmlReader.Read();
if (myXmlReader.NodeType == XmlNodeType.Element)
{
myElement = doc.CreateElement(myXmlReader.Name);
myElement.InnerXml = myXmlReader.InnerXml;
}
来自docs:不要直接实例化一个XmlElement;而是使用 CreateElement 等方法。
【讨论】: