diff --git a/metafacture-biblio/src/main/java/org/metafacture/biblio/marc21/MarcXmlEncoder.java b/metafacture-biblio/src/main/java/org/metafacture/biblio/marc21/MarcXmlEncoder.java index 912147a7..3d74a6f8 100644 --- a/metafacture-biblio/src/main/java/org/metafacture/biblio/marc21/MarcXmlEncoder.java +++ b/metafacture-biblio/src/main/java/org/metafacture/biblio/marc21/MarcXmlEncoder.java @@ -437,11 +437,17 @@ private void writeEscaped(final String str) { private void writeLeader() { final String leader = leaderBuilder.toString(); if (leaderBuilder.length() > 0) { - prettyPrintIndentation(); + if (formatted) { + writeRawLeader(getIndentationPrefix()); + } + writeTagLeader(Tag.leader::open); writeRawLeader(leader); writeTagLeader(Tag.leader::close); - prettyPrintNewLine(); + + if (formatted) { + writeRawLeader(NEW_LINE); + } } } @@ -455,10 +461,13 @@ private void writeTagLeader(final Function function) { writeRawLeader(function.apply(namespacePrefix)); } + private String getIndentationPrefix() { + return String.join("", Collections.nCopies(indentationLevel, INDENT)); + } + private void prettyPrintIndentation() { if (formatted) { - final String prefix = String.join("", Collections.nCopies(indentationLevel, INDENT)); - builder.append(prefix); + builder.append(getIndentationPrefix()); } } diff --git a/metafacture-biblio/src/test/java/org/metafacture/biblio/marc21/MarcXmlEncoderTest.java b/metafacture-biblio/src/test/java/org/metafacture/biblio/marc21/MarcXmlEncoderTest.java index 23835ad8..7e4186a5 100644 --- a/metafacture-biblio/src/test/java/org/metafacture/biblio/marc21/MarcXmlEncoderTest.java +++ b/metafacture-biblio/src/test/java/org/metafacture/biblio/marc21/MarcXmlEncoderTest.java @@ -130,10 +130,19 @@ public void createAnEmptyRecord() { @Test public void createARecordPrettyPrint() { encoder.setFormatted(true); - addOneRecord(encoder); + encoder.startRecord(RECORD_ID); + encoder.startEntity(Marc21EventNames.LEADER_ENTITY); + encoder.literal(Marc21EventNames.LEADER_ENTITY, "dummy"); + encoder.endEntity(); + encoder.literal("001", RECORD_ID); + encoder.startEntity("010 "); + encoder.literal("a", RECORD_ID); + encoder.endEntity(); + encoder.endRecord(); encoder.closeStream(); - String expected = XML_DECLARATION + "\n" + XML_ROOT_OPEN + "\n"// " \n" + String expected = XML_DECLARATION + "\n" + XML_ROOT_OPEN + "\n" + "\t\n"// + + "\t\tdummy\n" + "\t\t92005291\n"// + "\t\t\n"// + "\t\t\t92005291\n"//