2008-09-26 2 views
6

XML SQL 구문을 쿼리하기위한 프레임 워크가 있습니까? 저는 노드 목록을 반복적으로 반복해야합니다. SQL과 같은 XML 쿼리?


XML이 관계형 데이터베이스가 아니기 때문에이 단순한 희망적인 생각 (바보가 아닌 경우)이 가능하지 않을까요?

답변

13

XQuery 및 XPath ... SQL 구조가 바람직한 경우 XQuery가 더 많이 필요합니다.

+0

멋진 XPath를 PHP의 simpleXML로 구현했기 때문에 XPath를 사용하지 않았습니다. XQuery를 놓친 것 같습니다. –

+0

Xquery는 XPath를 구현하지만 악마의 작업입니다. – Tarski

2

.Net Framework에서는이 작업을 수행하는 데 LINQ를 제공하며 .Net System.Data 네임 스페이스를 사용하여 XML 파일에서 데이터를로드 할 수 있습니다.

당신도 등을 예를 들어

이이 테이블 사이에 조인 쿼리를 만들 수는 System.Data.DataTable는 ReadXml() 방법을 제공한다.

2

LINQ to XML을 사용해 볼 수도 있지만 언어에 구애받지 않습니다.

+0

도 내가 믿는 SQL입니까? – Meff

+0

LINQ 부분은 .net이므로 CLR 컴파일러에서 모든 언어를 사용할 수 있습니다. –

0

SQL Server 2005는 데이터 형식이 xmlXML DML을 지원합니다.

1

XQuery은 SQL에 가장 가까운 함수형 언어입니다. XPath은 XSLT 및 XQuery의 일부로 사용되는 문서 내의 노드를 찾는 표기법입니다.

MarkLogic과 같은 XML 데이터베이스는 관계형 데이터베이스가 관계형 데이터 용 SQL 엔진 역할을하는 것과 마찬가지로 XML 데이터 용 XQuery 엔진 역할을합니다.

+0

SQL Server와 Oracle은 XQuery도 지원합니다. – tuinstoel

0

XQuery는 분명히 앞으로 나아갈 길입니다. 이것은 eXistMarkLogic과 같은 XML 데이터베이스에서 사용되는 것입니다. 자바 세계에서

는 특히 Saxon

.NET를 들어, 플랫 파일에 XQuery를 실행하기위한 몇 가지 솔루션이 있습니다, 너무 많이 사용할 수 없다. Microsoft는 XQuery 라이브러리를 가지고 있었지만 .NET 2.0에서 가져 왔으며 다시는 등장하지 않았습니다. XQSharp은 네이티브 .NET 대안이지만 현재는 명령 행 버전 만 출시되었습니다.

1

해결할 문제에 따라 다릅니다. XML 파일이 꽤 클 경우 노드별로 파일 노드를 탐색하기 위해 SAX 파서와 같은 것을 사용해야하는 경우가 있습니다. 그렇지 않으면 OutOfMemoryException이 발생하거나 컴퓨터의 가상 메모리가 부족합니다.

그러나 XML 파일의 예상 크기가 상대적으로 작은 경우, 당신은 단순히보기, Linq는 같은 것을 사용하여 내 answer - 여기에 내가 설명하려고 수율 반환 등의 구조물에 훨씬 더 쉽게 노드를 통과하게하는 방법.

+0

방금 ​​비슷한 문제가 발생했습니다. MSXML6에서 300MB XML 파일을 읽고 위쪽으로 Gig의 RAM을 사용하고 있습니다. 다행스럽게도이 방법은 win2k에서 효과적이었고 매우 작은 페이지 파일이있는 VM에 대해서만 몇 가지 문제가있었습니다. 수익률은 수익률에는 영향을 미칠 것이라고 생각하지만, 불행히도 저는 모든 .NET hotness에 대해 Delphi 프로그래머이자 SOL입니다. –