Jeśli mam instancję xmlreader, w jaki sposób mogę go użyć do odczytania bieżącego węzła i do instancji xmlElement?Jak utworzyć element xmlElement z bieżącego węzła obiektu xmlReader?
Odpowiedz
nie testowano, ale jak o poprzez XmlDocument
:
XmlDocument doc = new XmlDocument();
doc.Load(reader);
XmlElement el = doc.DocumentElement;
Alternatywnie (od cmoment), coś jak:
doc.LoadXml(reader.ReadOuterXml());
Ale rzeczywiście nie jestem fanem tego .. zmusza dodatkowy xml-parsowanie (jedną z bardziej kosztownych procesorów) bez ważnego powodu. Jeśli oryginał jest bycie glitchy, to może rozważyć sub-czytelnika:
using (XmlReader subReader = reader.ReadSubtree())
{
XmlDocument doc = new XmlDocument();
doc.Load(subReader);
XmlElement el = doc.DocumentElement;
}
zmiana linii 2 na doc.LoadXml (reader.ReadOuterXml()); więc mogę zaakceptować. Dzięki. –
W jaki sposób odpowiada na pytanie? Spowoduje to odczytanie całego xml na XmlDocument i zwróci tylko element główny. –
@Sunny; element główny zawiera wszystkie pozostałe elementy jako potomkowie –
Zakładając, że masz XmlDocument, gdzie trzeba dołączyć nowo utworzony XMLELEMENT:
XmlElement myElement;
myXmlReader.Read();
if (myXmlReader.NodeType == XmlNodeType.Element)
{
myElement = doc.CreateElement(myXmlReader.Name);
myElement.InnerXml = myXmlReader.InnerXml;
}
Z docs: Nie nie tworzy bezpośrednio XmlElement; zamiast tego użyj metod takich jak CreateElement.
Naprawdę chcesz XmlElement, a nie XElement? –