저는 C#을 처음 사용하므로 간단한 작업 인 경우 사과드립니다. 내가하고 싶은 것은 루트 노드가 테이블 이름이고 루트 노드의 자식이 필드 이름과 값인 XML 파일을 엽니 다. 그런 다음 필드를 SQL Server 데이터베이스의 루트 노드 테이블에 매핑하고 필요에 따라 업데이트하거나 삽입하려고합니다. 누구든지 노드 트리를 통해 반복하고 SQL 문자열을 구축하는 것보다 더 우아한 방법이 있는지 알고 있습니까? XML 문서가 양식 인 것처럼 필드를 바인드하는 방법이 있어야하며 메모리에만 존재할 것만 같아 보입니다. 다시 말하지만,이 질문에 분명한 대답이 있으면 미안합니다. 모든 도움을 미리 감사드립니다.XML 테이블을 Datatable 필드에 매핑하십시오.
0
A
답변
0
이러한 작업을 해결하기 위해 OPENXML 방법을 사용합니다.
DECLARE @idoc int
DECLARE @doc varchar(1000)
SET @doc ='
<ROOT>
<Customer CustomerID="VINET" ContactName="Paul Henriot">
<Order OrderID="10248" CustomerID="VINET" EmployeeID="5"
OrderDate="1996-07-04T00:00:00">
<OrderDetail ProductID="11" Quantity="12"/>
<OrderDetail ProductID="42" Quantity="10"/>
</Order>
</Customer>
<Customer CustomerID="LILAS" ContactName="Carlos Gonzlez">
<Order OrderID="10283" CustomerID="LILAS" EmployeeID="3"
OrderDate="1996-08-16T00:00:00">
<OrderDetail ProductID="72" Quantity="3"/>
</Order>
</Customer>
</ROOT>'
--Create an internal representation of the XML document.
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
-- SELECT stmt using OPENXML rowset provider
SELECT *
FROM OPENXML (@idoc, '/ROOT/Customer/Order/OrderDetail',2)
WITH (OrderID int '../@OrderID',
CustomerID varchar(10) '../@CustomerID',
OrderDate datetime '../@OrderDate',
ProdID int '@ProductID',
Qty int '@Quantity')
그래서, 당신은 DB에 데이터를 삽입 OPENXML 문에서 SELECT ... INSERT를 사용할 수 있습니다 : XML에서 데이터를 선택하는 방법 BOL에서 예제가있다.
0
가장 간단한 방법은 XML 형식에 대한 간단한 엔터티 클래스를 만들고 XML serialization 특성을 사용하여 xml 요소를 클래스와 해당 속성에 매핑하는 것입니다. 그런 다음 표준 XmlSerializer를 사용하여 xml을 개체에 deserialize하거나 xml에 개체를 serialize 할 수 있습니다. 개체가 있으면 엔티티 클래스로 업데이트/삽입/삭제를 수행하기 위해 OR 매퍼 (LINQ to SQL, Entity Framework, NHibernate) 또는 iBatis와 같은 것을 사용하는 것이 쉽습니다.
관련 문제
- 1. xml to datatable
- 2. DataSet을 StringTemplate에 동적으로 매핑하십시오.
- 3. DataTable 테이블을 생성 한 후 수정하는 방법
- 4. LINQ가있는 XML 열 필드에 그룹화
- 5. jQuery Datatable Filter Customization
- 6. DataTable to XML 및 C# .NET의 ViceVersa
- 7. FluentNhibernate, 클래스를 여러 테이블에 매핑하십시오.
- 8. DataTable 만들기 및 기존 DataTable 스키마 복사?
- 9. Fluent NHibernate를 사용하여 구문 분석을 사용하여 두 개의 열을 한 필드에 매핑하십시오.
- 10. 무지개 색상을 RGB에 매핑하십시오.
- 11. 엔티티에 NativeQuery를 매핑하십시오.
- 12. 여러 번 열을 매핑하십시오.
- 13. DataTable 업데이트 문제
- 14. YUI DataTable Sorting
- 15. foreach 루프로 datatable 가능
- 16. ICEfaces의 다른 datatable 안에 데이터 테이블을 추가하는 방법
- 17. T-SQL을 사용하여 테이블의 XML 필드에 XML 피드를 직접 읽으시겠습니까?
- 18. FluetnNhibernate의 사용자 정의 유형을 매핑하십시오.
- 19. Complex UI를 깨끗하고 효율적으로 매핑하십시오.
- 20. 클래스의 필드에 대한 XML 문서를 참조하십시오.
- 21. XML을 XML 형식 필드에 저장하거나 FILESTREAM을 사용합니다.
- 22. JSF - 스크롤 가능한 DataTable
- 23. DataTable 도움말 선택
- 24. Datatable Getchanges가 작동하지 않습니다.
- 25. C# DataTable 및 PK
- 26. C# Datatable 로컬 복사본
- 27. 병렬 ForEach on DataTable
- 28. 데이터 테이블을 사용하여 xml 데이터를 데이터베이스에로드
- 29. DataTable Validator
- 30. datatable scroll