0
Nokogiri와 XML 문서를 구문 분석하는 방법을 알고 있습니다. 필자는 텍스트 문자열을 다시 정렬하고자하는 요소가 하나 있으므로 편집을 고려하거나 완전히 새로운 파일을 작성하려고합니다. 누구든지 도와 줄 수 있습니까?Nokogiri와 같이 Ruby를 사용하여 XML 파일을 편집 할 수 있습니까?
Nokogiri와 XML 문서를 구문 분석하는 방법을 알고 있습니다. 필자는 텍스트 문자열을 다시 정렬하고자하는 요소가 하나 있으므로 편집을 고려하거나 완전히 새로운 파일을 작성하려고합니다. 누구든지 도와 줄 수 있습니까?Nokogiri와 같이 Ruby를 사용하여 XML 파일을 편집 할 수 있습니까?
예를 들어 XML을 사용하려면이 예를 수정해야합니다. 당신의 XML을 감안할 때
은 같은 것입니다 :
<top>
<node1>
<value>mmm</value>
<value>zzz</value>
<value>ccc</value>
</node1>
<anothernode>
<value>zzz</value>
<value>ccc</value>
</anothernode>
</top>
그리고 당신은 노드 1의 자식 값으로 알파벳 순서로 만들고 싶어, 당신은 할 수 : 다음
n = Nokogiri::XML(the_xml_i_wrote_above)
node1 = n.xpath("//node1").first
sorted_children = node1.children.sort{|x,y| x.text <=> y.text }
node1.children.each {|x| x.unlink }
sorted_children.each {|x| node1 << x}
그리고 N을. to_s는 다음과 같아야합니다.
<top>
<node1>
<value>ccc</value>
<value>mmm</value>
<value>zzz</value>
</node1>
<anothernode>
<value>zzz</value>
<value>ccc</value>
</anothernode>
</top>
더 효율적인 방법이있을 수 있습니다. 특히 한 번에 모든 어린이 (아마 node1.children = []?) 또는 노드를 정렬하는 Nokogiri 방법의 링크를 해제하는 문서화 된 방법을 찾고 있습니다. 이 작업을 수행하는 다른 방법은 Nokogiri docs을 참조하십시오.
노드를 이동하기 전에 링크를 해제 할 필요가 없습니다. 노드는 트리의 한 지점에만있을 수 있으므로 요소에 요소를 추가하면 자동으로 이전 요소에서 제거됩니다. 몇 가지 사소한 개선점을 보여주는 코드의 [짧은 재 작성] (https://gist.github.com/745244)을 작성했습니다. – Phrogz
두 분 모두 감사합니다. – AKWF