Запрос XML как SQL?

Есть ли какая-либо структура для запроса синтаксиса XML SQL, я серьезно устал от повторения списков узлов.


Или это всего лишь принятие желаемого за действительное (если не идиотизм) и, конечно же, невозможно, поскольку XML не является реляционной базой данных?


person Peter Turner    schedule 26.09.2008    source источник


Ответы (7)


XQuery и XPath... XQuery — это то, что вам нужно, если структура SQL желательно.

person dacracot    schedule 26.09.2008
comment
Круто, я использовал XPath, потому что он реализован в PHP simpleXML, наверное, я просто пропустил XQuery. - person Peter Turner; 26.09.2008
comment
Xquery реализует XPath, однако это работа дьявола. - person Tarski; 28.02.2009

Вы можете попробовать LINQ to XML, но это не зависит от языка.

person Chris Cudmore    schedule 26.09.2008
comment
Часть LINQ — это .net, поэтому вы можете использовать любой язык с компилятором CLR. - person Chris Cudmore; 27.09.2008

.Net Framework предоставляет для этого LINQ, или вы можете использовать пространство имен .Net System.Data для загрузки данных из XML-файлов.

Вы даже можете создавать запросы, в которых есть соединения между таблицами и т. д.

Например, System.Data.DataTable предоставляет метод ReadXml().

person Craig Eddy    schedule 26.09.2008

XQuery — это функциональный язык, наиболее близкий к SQL. XPath – это нотация для поиска узла в документе, используемая как часть XSLT и XQuery. .

Базы данных XML, такие как MarkLogic, служат механизмами XQuery для данных XML, так же как реляционные базы данных служат механизмами SQL для реляционных данных. данные.

person MattMcKnight    schedule 26.09.2008
comment
Sql Server и Oracle также поддерживают XQuery. - person tuinstoel; 08.03.2009

Это зависит от проблемы, которую вы решаете. Если XML-файл довольно большой, иногда необходимо использовать что-то вроде синтаксических анализаторов SAX для обхода файла узел за узлом, иначе вы получите исключение OutOfMemoryException или закончится даже виртуальная память на вашем компьютере.

Но если ожидаемый размер XML-файла относительно невелик, вы можете просто использовать что-то вроде Linq, также см. мой -of-using-yield-return-iterators-in-c/2508429#2508429">answer - здесь я попытался объяснить, как упростить обход узлов с помощью конструкций типа yield return.

person SPIRiT_1984    schedule 01.10.2010
comment
Я только что столкнулся с подобной проблемой, у меня MSXML6 читает XML-файлы размером 300 мегабайт и использует более гигабайта оперативной памяти. К счастью, это работало с win2k, и у меня было только несколько проблем с виртуальными машинами с очень маленькими файлами подкачки. Я думаю, что Yield return сработает, но, к сожалению, я программист Delphi и SOL для всей горячности .NET. - person Peter Turner; 01.10.2010

SQL Server 2005 поддерживает XML DML для собственного типа данных xml.

person Constantin    schedule 26.09.2008

XQuery — это, безусловно, путь вперед. Это то, что используется базами данных XML, такими как eXist и MarkLogic.

В мире Java существует несколько решений для запуска XQuery на плоских файлах, в первую очередь Saxon.

Для .NET доступно не так много. У Microsoft действительно была библиотека XQuery, хотя она была взята из .NET 2 и больше никогда не появлялась. XQSharp — это нативная альтернатива .NET, хотя в настоящее время выпущена только версия для командной строки.

person Oliver Hallam    schedule 30.10.2008