Эффективный способ создать XML-документ из строки, содержащей хорошо, сформировал XML для навигации?

Лава является очень интересным экспериментальным языком. Это пытается включить некоторые новые понятия, очень полезные для RAD. Никакое практическое применение для него в настоящее время, но интересный тем не менее на длительном сроке.

более практичный, но одинаково интересный L.in.o.l.e.u.m. (выбирают раздел, свяжитесь слишком долго для вставки), язык. Это - низкоуровневый язык как блок, но намного легче учиться, также утверждает, что был крестом/платформой (не протестированный лично). Некоторые очень хорошие программы разрабатываются на этом жестком языке (взгляд на веб-сайт).

И конечно некоторые более общие языки полезны, чтобы учиться также и обеспечить некоторые интересные моменты:

  • ADA: хорошее понятие, легкое учиться кодировать хорошо, также используемый в военных проектах, НАСА и Boing.
  • Ruby: супер легкий выучить oo язык сценария, необходимость для тестирования GUI и веб-разработки.
  • ERLANG: Главным образом используемый Ericsson для параллельного программирования, также функциональный язык.
  • Логотип: язык для обучения детей начальной школы (иначе. Lisp для новичков).

Наконец я рекомендую Контекст, Свободный , который является языком для создания сложных частей сгенерированного искусства компьютера.

6
задан Newbie 28 September 2009 в 21:24
поделиться

4 ответа

Для скорости используйте 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);
}
11
ответ дан 8 December 2019 в 03:53
поделиться

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.

10
ответ дан 8 December 2019 в 03:53
поделиться

Это зависит от структуры XML. Если это относительно просто, то наиболее эффективный способ обернуть строку в StringReader , а затем поместить ее в XmlReader . Преимущество состоит в том, что вам не придется создавать XML-дерево в памяти, копируя данные из строки - вы просто будете читать узлы один за другим.

Если структура документа достаточно сложна, вам может потребоваться (или вы захотите ) DOM - в этом случае XDocument.Parse должен помочь.

3
ответ дан 8 December 2019 в 03:53
поделиться

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.

3
ответ дан 8 December 2019 в 03:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: