Poszukuję najprostszego sposobu przekonwertowania ciągu znaków zawierającego poprawny XML na obiekt XmlElement
w języku C#.Potrzebuję przekonwertować ciąg znaków XML na XmlElement
Jak zmienić to w XmlElement
?
<item><name>wrench</name></item>
Poszukuję najprostszego sposobu przekonwertowania ciągu znaków zawierającego poprawny XML na obiekt XmlElement
w języku C#.Potrzebuję przekonwertować ciąg znaków XML na XmlElement
Jak zmienić to w XmlElement
?
<item><name>wrench</name></item>
użyj:
private static XmlElement GetElement(string xml)
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
return doc.DocumentElement;
}
Strzeżcie !! Jeśli chcesz najpierw dodać ten element do innego dokumentu, musisz go zaimportować za pomocą ImportNode
.
Czy to się nie uda, jeśli na początku nie ma tagu
@ Jimmy Hoffa: IIRC LoadXml przyjmuje każdy dobrze uformowany fragment XML, który zawiera dokładnie jeden element XML na najwyższym poziomie. ' xml' na początku nie jest wymagane. – dtb
Tak, to zadziała, spróbuj sam. – Aliostad
Zastosowanie XmlDocument.LoadXml:
XmlDocument doc = new XmlDocument();
doc.LoadXml("<item><name>wrench</name></item>");
XmlElement root = doc.DocumentElement;
(lub w przypadku mówisz Xelement użyć XDocument.Parse :)
XDocument doc = XDocument.Parse("<item><name>wrench</name></item>");
XElement root = doc.Root;
Chciał tego elementu, a dla XElement może po prostu zrobić XElement.Parse (xmlString), ale dajesz mu dokument, a nie element. –
@ Jimmy Hoffa: Jeśli masz dokument, łatwo zdobyć element główny, nie? – dtb
Pewnie, właśnie mówiłeś, że twoja odpowiedź może być lepiej dopasowana do pytania o plakaty, na wypadek, gdyby nie było to dla niego tak łatwe, jak dla nas. –
Możesz użyć XmlDocument.LoadXml(), aby to zrobić.
Oto prosty examle:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("YOUR XML STRING");
Dziękuję za odpowiedź. – Dean
Próbowałem z tym fragmencie, Got rozwiązanie.
// Sample string in the XML format
String s = "<Result> No Records found !<Result/>";
// Create the instance of XmlDocument
XmlDocument doc = new XmlDocument();
// Loads the XML from the string
doc.LoadXml(s);
// Returns the XMLElement of the loaded XML String
XmlElement xe = doc.DocumentElement;
// Print the xe
Console.out.println("Result :" + xe);
Jeśli jakiś inny lepszy/skuteczny sposób realizacji tego samego, proszę dać nam znać.
Dzięki & Cheers
Załóżmy, że już miał XmlDocument z dziećmi węzłów i trzeba dodać więcej element podrzędny z łańcucha.
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);
Rezultat:
<root>
<item><name>this is earlier manipulation</name>
<item><name>wrench</name></item>
<item><name>screwdriver</name>
</root>
'XmlElement' lub' XElement'? – SLaks
Czy ciąg ma jeden element główny? – SLaks
Nie musi to być element główny. – Dean