Лучшая библиотека сериализации XML для приложения C++ MFC

Здесь:

<% @active_patients.each do |list| %>
  
    
      <%= list.patient.role.user.first_name %> <%= list.patient.role.user.last_name %>
    
    
      <%= link_to patient_path(id: @patient.id), class: "btn" do %>View<% end %> . #### THIS IS THE LINE
    
  
<% end %>

у вас есть переменная list для вас. Похоже, что вы получаете patient, выполняя list.patient, как здесь:

<%= list.patient.role.user.first_name %> <%= list.patient.role.user.last_name %>

Но затем вы пытаетесь использовать переменную с именем @patient, здесь:

[112 ]

когда у вас нет переменной @patient. Итак, вы получаете ошибку nil.

Вместо этого, кажется, вы должны сделать:

<%= link_to patient_path(id: list.patient.id), class: "btn" do %>View<% end %> .

Или, как указывает Милгнер, вы можете просто сделать:

<%= link_to patient_path(list.patient), class: "btn" do %>View<% end %> .

Также вы можете захотеть изучите Закон Деметры , который вы нарушаете (IMO), когда делаете:

list.patient.role.user.first_name

5
задан SmacL 22 October 2008 в 11:11
поделиться

6 ответов

Библиотека Boost Serialization поддерживает XML. Эта библиотека в основном состоит в:

  1. Запустите с принципов сериализации MFC и возьмите все хорошие вещи, которые она обеспечивает.
  2. Решите каждую проблему сериализации MFC!

Среди улучшений по сравнению с MFC поддержка XML. Обратите внимание необходимое управление XML-схемой этой сериализации. Это использует свою собственную схему.

4
ответ дан 18 December 2019 в 12:03
поделиться

Мы используем TinyXML для всех наших потребностей XML быть этим MFC или прямой C++.

http://sourceforge.net/projects/tinyxml

0
ответ дан 18 December 2019 в 12:03
поделиться

что относительно RapidXML я использую его в приложении MFC с некоторой модификацией для поддержки UTF-16 со станд.:: строка. Я довольно удовлетворен им до сих пор.

1
ответ дан 18 December 2019 в 12:03
поделиться

Хорошее решение было бы libxml. Это обеспечивает легкий парсинг SAX и структуры данных для обработки XML. Существует несколько библиотек DOM, которые создаются сверху libxml.

Unfortunatly это - библиотека C, но обертки C++ доступны.

Несколько лет назад я переключился от MSXML до libxml из-за производительности, выпускает Вас упомянутый.

Если Вы решаете использовать libxml, необходимо также смотреть на libxslt.

2
ответ дан 18 December 2019 в 12:03
поделиться

Мы используем Xerces-C++. Было легко установить, и производительность достаточно хороша, таким образом, мы не должны думать об изменении. Однако мы не XML тяжелый.

Я действительно слушал подкаст Scott HanselmanМинут Hansel), где они обсуждают производительность XML MSXML и XSLT.

2
ответ дан 18 December 2019 в 12:03
поделиться

Это старая проблема. В 1999 и 2000 годах я был руководителем группы разработчиков с наиболее критическими зависимостями в крупнейшем программном проекте в мире, и именно этот вопрос был в центре моей работы в то время. Я убежден, что колесо было изобретено несколькими инженерами, которые не знали, что другие уже изобрели его. То же самое можно сказать и о связывании данных XML в C++. Я тоже изобрел его и совершенствовал более 10 лет в различных проектах. У меня есть решение, которое решает проблемы, отмеченные здесь, и некоторые дополнительные вопросы, которые постоянно возникают:

  1. XML Updates. Это возможность повторного применения подмножества XML в существующей объектной модели. Во многих случаях XML связан с индексируемыми объектами, и мы не можем позволить себе повторную индексацию при каждом обновлении.

  2. Управление интерфейсами COM и CORBA. В том же отношении, что связывание данных XML может быть автоматизировано с помощью объектно-ориентированной практики - так же могут быть автоматизированы и экземпляры интерфейсных объектов, которые предоставляют эти данные на прикладном уровне.

  3. Отслеживание состояния. Приложению часто необходимо различать пустое значение и отсутствующее значение - оба создают пустую строку. Это обеспечивает валидацию вместе с привязкой данных.

Исходный код использует наименее ограничительную лицензию - меньше, чем GPL. Проект поддерживается и управляется отсюда:

http://www.codeproject.com/KB/XML/XMLFoundation.aspx

Теперь, когда на дворе 2010 год, я верю, что никто больше не будет пытаться изобрести колесо, потому что есть из чего выбирать. IMHO - это колесо является наиболее отшлифованной и хорошо округленной реализацией.

Наслаждайтесь.

4
ответ дан 18 December 2019 в 12:03
поделиться
Другие вопросы по тегам:

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