Библиотеки и учебные руководства для XML в Delphi

NullPointerException s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException. Они наиболее распространены, но другие способы перечислены на странице NullPointerException javadoc.

Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException, be:

public class Example {

    public static void main(String[] args) {
        Object obj = null;
        obj.hashCode();
    }

}

В первой строке внутри main я явно устанавливаю ссылку Object obj равной null. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.

(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)

19
задан bluish 16 December 2011 в 10:49
поделиться

6 ответов

Можно запустить путем рассмотрения компонента Delphi TXMLDocument. Это предоставит Вам основы работы с XML/DOM. Это просто и может быть добавлено путем отбрасывания его на Форму. Это имеет методы LoadFromFile и SaveToFile и легко перемещено.

Однако в какой-то момент Вы исчерпаете функции TXMLDOCUMENT, особенно если Вы захотите работать с вещами как XPath.

я предлагаю, чтобы Вы посмотрели на IXMLDOMDocument2, который является частью MSXML2_TLB, например,

  XML := CreateOleObject('MSXML2.DOMDocument.3.0') as IXMLDOMDocument2;
  XML.async := false;
  XML.SetProperty('SelectionLanguage','XPath');

необходимо будет добавить msxmldom, xmldom, XMLIntf, XMLDoc & MSXML2_TLB к Вашему разделу использования.

существует несколько библиотек компонентов там, но я предложил бы писать Ваш собственный класс помощника или функции. Вот пример одного, мы записали и использование:

function XMLCreateRoot(var xml: IXMLDOMDocument2; RootName: string; xsl: string = ''; encoding: string = 'ISO-8859-1'; language: string = 'XPath'): IXMLDOMNode;
var
  NewPI:   IXMLDOMProcessingInstruction;
begin

  if language<>'' then
     xml.SetProperty('SelectionLanguage','XPath');

  if encoding<>'' then begin
     NewPI:=xml.createProcessingInstruction('xml', 'version="1.0" encoding="'+encoding+'"');
     xml.appendChild(NewPI);
  end;

  if xsl<>'' then begin
     NewPI:=xml.createProcessingInstruction('xml-stylesheet','type="text/xsl" href="'+xsl+'"');
     xml.appendChild(NewPI)
  end;

  xml.async := false;
  xml.documentElement:=xml.createElement(RootName);
  Result:=xml.documentElement;
end;

Берут его оттуда.

17
ответ дан 30 November 2019 в 02:20
поделиться

Вот несколько учебных руководств:

Кроме того, можно хотеть изучить единица XMLIntf (хотя эта связанная страница Delphi Wikia очень легка на содержании).

9
ответ дан 30 November 2019 в 02:20
поделиться

Я использую nativeXML от simdesign. Это вынимает всю боль из работы с XML, Вы будете в порядке в минутах.

11
ответ дан 30 November 2019 в 02:20
поделиться

Вы могли попробовать следующую книгу: Руководство Разработчиков Delphi по XML

В основном я рекомендовал бы использовать DOM Microsoft. Необходимо будет импортировать библиотеку как с любым другим COM-объектом.

8
ответ дан 30 November 2019 в 02:20
поделиться

Можно использовать Delphi Данные XML, Связывающие (Файл - Новый - Другой - XML, Отображающийся (я не знаю путь точно, я дома без Delphi)).

Это создает объекты/интерфейсы по поставщику XML, таким образом, можно работать с объектами/структурами вместо плоскости xml текстовый файл.

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

8
ответ дан 30 November 2019 в 02:20
поделиться

Я работал с nativeXML приблизительно в течение года теперь. Мои потребности довольно просты. Беглость XML является небольшой частью объемного приложения для меня, но я смог реализовать части, в которых я нуждаюсь почти с такой скоростью, как я могу кодировать их, справка онлайн хороша, и мои потребности были удовлетворены за день, а не неделю или дольше. Я голос второго davehay за nativeXML.

4
ответ дан 30 November 2019 в 02:20
поделиться
Другие вопросы по тегам:

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