1k.xml
이름이 2개이고 .xml 파일이 있습니다 1n.xml
.
이 파일에는 1k.xml
.txt에 없는 몇 가지 추가 요소와 데이터가 포함되어 있습니다 1n.xml
. 1n.xml
한 요소의 텍스트를 제외하고 두 파일이 모두 동일하도록 누락된 콘텐츠를 복사하고 싶습니다 .
1k.xml
<verse>
<verse-no>1</verse-no>
<section>Creation</section>
<verse-content>In the beginning God created the heaven and the earth.</verse-content>
</verse>
...
<verse>
<verse-number>quote</verse-number>
<verse-quote>1:26, 27</verse-quote>
<quote>When Adam came from the Creator’s hand, he bore, in his physical, mental, and spiritual nature, a likeness to his Maker. “God created man in His own image” (Genesis 1:27), and it was His purpose that the longer man lived the more fully he should reveal this image—the more fully reflect the glory of the Creator. All his faculties were capable of development; their capacity and vigor were continually to increase. {Ed 15}</quote>
</verse>
1k.xml
1n.xml
차이점 은 다음과 같습니다.
sections
에는 존재하지 않습니다1n.xml
verse-content
차이점은1n.xml
이것이 제가 유지하고 싶은 요소 중 하나라는 것입니다.- 모든 것이 더 이상
quote
존재하지 않습니다 .<verse>
</verse>
1n.xml
특징:
- 시가 없습니다
section
.section
올바른 위치(verse-content
오른쪽 바로 위) 에 삽입 해야 합니다verse-number
. - 또한 요소
quote
는 무작위입니다. 즉, 나타나는 순서가 없습니다.
간단히 말해서:
특정 측면을 무시하는 옵션을 사용하여 두 파일을 동기화할 수 있는 소프트웨어가 있습니까?
perl
이 작업을 사용하거나 수동으로 수행 할 수 있습니까java
(저는 이 두 가지에 대해서만 경험이 있기 때문에)?데이터를 제외한 모든 측면에서 이 두 파일을 동기화 할 수 있는 튜토리얼이나 방법을 알려주십시오
verse-content
.
편집하다:
기본적으로 이 문서들은 성경의 두 가지 다른 버전입니다. 이것은 *k.xml
King James 버전 파일과 *n.xml
새로운 King James 버전입니다.
아시다시피 절 번호와 파일명이 동일합니다. 유일한 차이점은 성경입니다. 뉴킹제임스 성경은 성경의 다른 번역본입니다.
KJV 파일은 제가 수정했습니다. 부품과 견적을 수동으로 추가했습니다. NKJV 문서에는 그런 내용이 없습니다. 그것들은 날것입니다. 모든 섹션과 인용문을 수동으로 다시 실행하지 않고 NKJV 파일로 전송하고 싶습니다.
따라서 현재 NKJV는 다음과 같습니다.
1n.xml
<verse>
<verse-no>1</verse-no>
<verse-content>In the beginning God created heavens and the earth.</verse-content>
</verse>
따옴표도 없고 장도 없습니다. 최종 결과는 다음과 같아야 합니다.
End result 1n.xml:
<verse>
<verse-no>1</verse-no>
<section>Creation</section>
<verse-content>In the beginning God created heavens and the earth.</verse-content>
</verse>
...
<verse>
<verse-number>quote</verse-number>
<verse-quote>1:26, 27</verse-quote>
<quote>When Adam came from the Creator’s hand, he bore, in his physical, mental, and spiritual nature, a likeness to his Maker. “God created man in His own image” (Genesis 1:27), and it was His purpose that the longer man lived the more fully he should reveal this image—the more fully reflect the glory of the Creator. All his faculties were capable of development; their capacity and vigor were continually to increase. {Ed 15}</quote>
</verse>
답변1
Perl과 Excellent 모듈을 사용하여 XML::Twig
이 작업을 수행 할 수 있습니다. 내가 당신을 올바르게 이해했다고 가정하면, 기본적인 작업은 한 파일에서 "구절 내용" 요소를 복사하고, 다른 파일에서 "다른 모든 것"을 복사한 다음 새 파일을 만드는 것입니다.
그래서:
#!/usr/bin/perl
use strict;
use warnings;
use XML::Twig;
my %nkjv_content;
sub extract_content {
my ( $twig, $verse ) = @_;
my $verse_number = $verse->first_child_text('verse-no');
my $content = $verse->first_child_text('verse-content');
$nkjv_content{$verse} = $content;
}
my $nkjv = XML::Twig->new( twig_handlers => { 'verse' => \&extract_content } );
$nkjv ->parsefile('1n.xml');
my $merged_version = XML::Twig->new('pretty_print' => 'indented')->parsefile('1k.xml');
foreach my $verse ($merged_version) {
my $verse_number = $verse->first_child_text('verse-no');
print $verse_number, ":", $verse->first_child_text('verse-content'), "\n";
#replace the content with the one from the nkjv source file.
$verse->first_child('verse_content')->set_content( $nkjv_content{$verse_number} );
}
$merged_version -> print();
이는 다음을 수행합니다.
- nkjv 파일을 구문 분석하고
verse-content
요소를 해시로 추출합니다. - 다음을 포함하는 "n.xml"을 로드합니다.최대보관하고 싶은 정보.
- 각 "구절"을 반복하고
verse-content
요소를 nkjv 버전으로 바꿉니다. - 인쇄 출력(형식화/들여쓰기)