[C#] C #에서 XML 처리 방법


Answers

크기에 따라 다릅니다. 중소 규모 XML의 경우 XmlDocument (모든 C # / .NET 버전) 또는 XDocument (.NET 3.5 / C # 3.0)와 같은 DOM이 확실한 승자입니다. xsd를 사용하는 경우 XmlReader를 사용하여 xml을로드 할 수 있으며 XmlReader는 XmlReaderSettings를 수락 ( 만들기 ) 할 수 있습니다. XmlReaderSettings 개체에는 xsd (또는 dtd) 유효성 검사를 수행하는 데 사용할 수있는 Schema 속성이 있습니다.

xml을 작성하는 경우 LINQ-to-XML (XDocument)을 사용하여 이전 XmlDocument보다 내용을 배치하는 것이 약간 더 쉽다는 점에 유의해야합니다.

그러나 거대한 xml의 경우 DOM이 너무 많은 메모리를 처리 할 수 ​​있습니다.이 경우 XmlReader / XmlWriter를 직접 사용해야 할 수도 있습니다.

마지막으로, xml을 조작하기 위해 XslCompiledTransform (xslt 계층)을 사용할 수 있습니다.

xml 작업의 대안은 객체 모델을 사용하는 것입니다. xsd.exe 를 사용하여 xsd 호환 모델을 나타내는 클래스를 만들고 xml 을 객체로 로드하고 OO 로 객체 를 조작 한 다음 해당 객체를 다시 직렬화 할 수 있습니다. XmlSerializer를 사용 하여이 작업을 수행합니다.

Question

C # 2.0에서 XML 문서, XSD 등을 다루는 가장 좋은 방법은 무엇입니까?

어떤 클래스를 사용할 것인가? XML 문서를 파싱하고 만드는 최선의 관행은 무엇인가?

편집 : 닷넷 3.5 제안도 환영합니다.




C # 프로그래머로서의 개인적인 견해는 C #에서 XML을 처리하는 가장 좋은 방법은 코드의 해당 부분을 VB .NET 프로젝트에 위임하는 것입니다. .NET 3.5에서 VB .NET에는 XML 리터럴이 있습니다. XML 리터럴은 XML을 훨씬 더 직관적으로 처리합니다. 여기를 참조하십시오.

Visual Basic에서 LINQ to XML 개요

(C # 코드가 아닌 VB 코드를 표시하도록 페이지를 설정해야합니다.)

C #에서 나머지 프로젝트를 작성하지만 참조 된 VB 프로젝트에서 XML을 처리합니다.




뉴욕,

예제 1에서 "doc"과 "xdoc"가 일치하지 않아야합니까?

XDocument **doc** = XDocument.Load(pathToXml);
List<Person> people = (from xnode in **xdoc**.Element("People").Elements("Person")
                   select new Person
                   {
                       Name = xnode.Attribute("Name").Value
                   }).ToList();



.NET 3.5에서 작업 중이며 실험용 코드가 마음에 들지 않으면 LINQ to XSD를 확인하십시오 ( http://blogs.msdn.com/xmlteam/archive/2008/02/21/linq-to- xsd-alpha-0-2.aspx ) XSD (XSD의 내장 규칙 포함)에서 .NET 클래스를 생성합니다.

그런 다음 XSD 규칙을 준수하는지 확인하기 위해 파일에 직접 쓰고 파일에서 읽는 기능이 있습니다.

필자가 함께 작업하는 모든 XML 문서에 대해 XSD를 사용하는 것이 좋습니다.

  • XML에 규칙을 적용 할 수 있습니다.
  • 다른 사람들이 XML이 어떻게 / 구조화 될지를 볼 수있게합니다.
  • XML 유효성 검사에 사용할 수 있습니다.

Liquid XML Studio는 XSD를 생성하기위한 훌륭한 도구이며 무료입니다!