2009-10-23 3 views
9

모든 언어가 XML을 구문 분석 할 수 있다는 것을 알고 있습니다. 저는 여러분이 자신의 경험에서 우연히 만났던 이점이나 단점을 정말로 찾고 있습니다. Perl이 여기 저의 표준이 되겠지만 제안은 열려 있습니다.XML 구문 분석 - 작업에 적합한 스크립팅 언어/패키지?

감사합니다.

업데이트 : 좋은 일을 한 XML :: Simple과 함께 끝났지 만, 사용 계획이 있다면 한 가지 조언이 있습니다 .- 먼저 forcearray 옵션을 연구하십시오. 나는 그것이 보통 모범 사례 인 forcearray를 설정한다는 사실을 알게 된 후에 수많은 문장을 다시 써야했습니다. This 페이지에 내가 찾을 수있는 가장 명확한 설명이 있습니다. 솔직하게, 나는 이것이 디폴트 행동이 아닌 것에 놀랐다.

+0

대부분은 XML 구문 분석 외에 무엇을해야하는지에 달려 있으며 아마도 그러한 언어에 익숙해 져야 할 수도 있습니다. 파이썬과 C#은 XML을 파싱하는 데 큰 도움을 주며 매우 유연합니다. C++은 그 자체로 언어가 더 엄격하고 더 신중한 계획 (반드시 나쁜 것은 아님)을 요구할지라도, 좋은 라이브러리를 가지고 있습니다. – RedGlyph

+0

당신은 이미 적절한 파서에 대해 질문하고 있으므로,이 페이지에서 정규 표현식 사용에 대한 경고와 회담을 무시하십시오. 그러나 하단에는 다양한 언어에 대한 파서의 제안이 제공됩니다 : http://htmlparsing.icenine.ca – genio

+3

나는이 질문에 더 구체적인 기준이없는 ** 정답 **이 없다고 생각하는 유일한 사람이라고 생각합니다. –

답변

10

그때 XML::Simple 추천 :

점점 더 많은 웹 사이트가 자신의 콘텐츠를 XML을 사용하기 시작으로, 그것은 XML 을 구문 분석하는 방법을 알고 개발자 웹을위한 점점 더 중요 데이터를 다른 형식으로 변환하십시오. 바로 Perl 모듈 이라는 XML :: Simple이 등장합니다. 은 XML 데이터 구문 분석의 번거 로움을 덜어 주며, 은 보다 더 쉽게 프로세스를 진행합니다.

+4

XML :: Simple은 때때로 받아 들일 수 있습니다 * 때때로 * 복잡하지만 엄격하게 형식화 된 데이터의 경우 가치가있는 것보다 더 많은 문제가 있습니다. 대신 XML :: Twig 또는 XML :: LibXML을 사용해 보겠습니다. – hobbs

+1

XML이 큰 경우 - XML ​​:: Simple을 비롯한 모든 DOM 구문 분석기를 사용하면 매우 나쁜 생각입니다. – Aye

10

XML::Twig은 매우 훌륭합니다. 특히 다른 옵션과 같이 지나치게 길지 않기 때문입니다. 펄을 사용하는 경우

+5

거대한 데이터 세트를 처리해야하는 경우 XML :: Twig의 두 번째 옵션입니다. – squeeks

+1

XML :: Twig는 XML을 혼합 모드로 처리 할 수 ​​있습니다. –

7

순수 XML 파싱의 경우 Java, C#, C++, C 등을 사용하지 않을 것입니다. 바나나를 원하는대로 고비를 많이 챙기는 경향이 있습니다.

Perl, PHP, Python, Groovy와 같은 상위 레벨 및 해석 언어가 더 적합합니다. Perl은 거의 모든 Linux 배포판에 포함되어 있습니다. 대부분 PHP와 마찬가지입니다.

최근에 특히 Groovy를 사용하여 매우 쉽게 찾을 수있었습니다. C 파서가 예를 들어 Groovy보다 훨씬 더 빠르다고 생각해도 좋다.

+2

XML 파싱 C#은 간단합니다. 그런 나쁜 경험을 신고하는 데 사용한 것은 무엇입니까? 표준 라이브러리가 아닌 다른 라이브러리를 사용 했습니까? 그리고 기록을 보면 필자는 Perl과 PHP를 비교할 때 "상위 언어"로 사용하지는 않을 것이지만, 사실 완전한 완전 객체 지향 언어는 아닙니다. – RedGlyph

+0

Mono (.net 2.0 호환)를 사용했습니다. 그리고 나는 더 높은 수준의 언어가 아니라 더 높은 수준의 언어가 의미하는 것을 보려고 인터넷 검색을한다고 말했다. –

+0

아, 귀하의 문장은 비교해 보였지만 간단히 말해서 ~ 높은 수준의 언어를 의미했습니다. 그리고 아니오, 저는 보통 Google이나 Wikipedia를 사용하여 단어 정의를 확인하지 않지만 다른 사람들이 흔히하는 실수라고 생각합니다. System.Xml도 Mono에 있으며 난 그것에 대해 너무 복잡해 보이는 것을 찾지 못했습니다. 그것은 단지 프로그래밍 언어로 쉽게 느껴져야한다는 또 다른 중요한 기준을 강조한 것입니다. – RedGlyph

1

파이썬은 XML을 꽤 잘 지원합니다. 표준 라이브러리 DOM 패키지에서 XML을 더 유용한 오브젝트 구조로 직접 구문 분석하는 훨씬 더 '파이썬 (pythonic)'라이브러리에 이르기까지.

실제로 '올바른'언어는 없지만 요즘 대부분의 언어에 적합한 XML 패키지가 있습니다.

6

모두 라이브러리에 있습니다.

파이썬에는 XML을위한 훌륭한 라이브러리가 있습니다. 내 선호도는 lxml입니다. 그것은 libxml/libxslt를 사용하므로 빠르지 만 파이썬 바인딩은 사용하기 쉽습니다. Perl은 매우 훌륭한 OO 라이브러리를 가지고 있습니다.

3

정확히 스크립팅 언어는 아니지만 Scala도 고려해 볼 수 있습니다. here부터 시작할 수 있습니다.

+0

+1 스칼라 ... 그리고 15 개의 문자 더 ... – wheaties

4

Perl을 결정하면 사람들이 XML :: Simple을 추천하는 것을 보았습니다.

XML :: Simple은 실제로 사용하기 쉽고 훌륭하지만 DOM 파서입니다. 따라서 슬프게도 프로세스에 메모리가 부족 해지면 대용량 XML 파일을 처리하는 데 전혀 부적합합니다. DOM 파서 (XML :: Simple 또는 Perl에만 국한되지 않음)의 일반적인 문제입니다.

큰 파일의 경우 선택한 언어로 SAX 파서를 선택해야합니다 (Perl에는 많은 XML SAX 파서가 있거나 표준 SAX 파서보다 훨씬 뛰어난 XML :: Twig와 같은 다른 스트림 파서를 사용하십시오). 다른 언어는 말할 수 없음).

+0

실제로 XML :: 나뭇 가지는 (단호하게!) SAX가 아닙니다. 스트림 지향적이지만 여전히 SAX를 사용하기 쉽도록 설계되었습니다. – mirod

0

XML 파일에서 데이터 읽기 C# 및 LINQ to XML을 사용하면 쉽게 데이터를 읽을 수 있습니다!

저는 파이썬을 정말 좋아하지만 어쨌든 표준 라이브러리로 XML을 구문 분석하는 것이 어렵다는 것을 알았습니다.

3

특히 Scala 프로그램에 XML을 직접 입력 할 수 있으므로 Scala의 XML 지원은 상당히 좋습니다.

마이크로 소프트는 또한 LINQ for XML

와 멋진 통합 된 물건을했다하지만 난 정말 같은 Elementtree 혼자 그냥 패키지 대신 펄의 파이썬을 사용하는 것이 이유이다)

여기 예입니다 :

import elementtree.ElementTree as ET 

# build a tree structure 
root = ET.Element("html") 

head = ET.SubElement(root, "head") 

title = ET.SubElement(head, "title") 
title.text = "Page Title" 

body = ET.SubElement(root, "body") 
body.set("bgcolor", "#ffffff") 

body.text = "Hello, World!" 

# wrap it in an ElementTree instance, and save as XML 
tree = ET.ElementTree(root) 
tree.write("page.xhtml") 
0

나는 다른 모든 것과 같이 달려 있다고 말할 것입니다. VB.NET 2008은 XML 리터럴을 사용하고 LINQ to XML에 IntelliSense가 있으며 XML을 XSD으로 바꾸는 몇 가지 파워 장난감이 있습니다. 개인적으로, 당신이 .NET 환경에서 일하고 있다면 이것이 최선의 선택이라고 생각합니다.

1

Ruby을 사용하려면 Nokogiri 또는 Hpricot을보고 싶을 것입니다. 둘 다 강점과 약점이 있습니다. 언어와 패키지 선택은 실제로 파싱 한 후 데이터로 수행하려는 작업으로 넘어갑니다.