Лава является очень интересным экспериментальным языком. Это пытается включить некоторые новые понятия, очень полезные для RAD. Никакое практическое применение для него в настоящее время, но интересный тем не менее на длительном сроке.
более практичный, но одинаково интересный L.in.o.l.e.u.m. (выбирают раздел, свяжитесь слишком долго для вставки), язык. Это - низкоуровневый язык как блок, но намного легче учиться, также утверждает, что был крестом/платформой (не протестированный лично). Некоторые очень хорошие программы разрабатываются на этом жестком языке (взгляд на веб-сайт).
И конечно некоторые более общие языки полезны, чтобы учиться также и обеспечить некоторые интересные моменты:
Наконец я рекомендую Контекст, Свободный , который является языком для создания сложных частей сгенерированного искусства компьютера.
Для скорости используйте XmlReader
:
using (StringReader sr = new StringReader(myString))
using (XmlReader xr = XmlReader.Create(sr))
{
while (xr.Read())
{
if (xr.NodeType == XmlNodeType.Element && xr.Name == "foo")
{
Console.WriteLine(xr.ReadString());
}
}
}
Вышеупомянутое печатает текстовое содержимое каждого элемента с именем «foo» в XML-документе. (Ну, вроде как. ReadString
не очень изящно обрабатывает вложенные элементы.)
Использование XPathDocument
медленнее, потому что весь документ анализируется, прежде чем вы сможете начать поиск в нем , но его достоинство заключается в простоте:
using (StringReader sr = new StringReader(myString))
{
XPathDocument d = new XPathDocument(sr);
foreach (XPathNavigator n in d.CreateNavigator().Select("//foo/text()"))
{
Console.WriteLine(n.Value);
}
}
Если вас не интересует производительность или использование памяти, проще всего использовать XmlDocument
:
XmlDocument d = new XmlDocument();
d.LoadXml(myString);
foreach (XmlNode n in d.SelectNodes("//foo/text()"))
{
Console.WriteLine(n.Value);
}
For navigation? Probably XPathDocument
:
string s = @"<xml/>";
XPathDocument doc = new XPathDocument(new StringReader(s));
From MSDN,
Provides a fast, read-only, in-memory representation of an XML document by using the XPath data model.
Unlike XmlDocument
etc, it is optimised for readonly usage; more efficient but less powerful (i.e. you can't edit it). For notes on how to query it, see here.
Это зависит от структуры XML. Если это относительно просто, то наиболее эффективный способ обернуть строку в StringReader
, а затем поместить ее в XmlReader
. Преимущество состоит в том, что вам не придется создавать XML-дерево в памяти, копируя данные из строки - вы просто будете читать узлы один за другим.
Если структура документа достаточно сложна, вам может потребоваться (или вы захотите ) DOM - в этом случае XDocument.Parse
должен помочь.
I would use XmlDocument.Load() to get a DOM from the string. Then you can traverse it using the appropriate DOM methods or XPATH as needed.