Element API

The Element class represents XML elements and provides comprehensive methods for manipulating element content, attributes, and whitespace while preserving formatting.

Overview

The Element class is the core building block for XML documents in DomTrip, providing:

  • Element creation and manipulation
  • Attribute management with formatting preservation
  • Text content handling with whitespace preservation
  • Child element navigation and modification
  • Comprehensive whitespace control
  • Namespace-aware operations

Element Creation

Factory Methods

// Create elements using factory methods
Element simple = Element.of("dependency");
Element withText = Element.of("groupId").textContent("com.example");
Element withNamespace = Element.of(QName.of("http://maven.apache.org/POM/4.0.0", "project"));

// Create empty element
Element empty = new Element("placeholder");

Builder Pattern

// Build complex elements with fluent API
Element dependency = Element.of("dependency")
        .attribute("scope", "test")
        .attribute("optional", "true")
        .textContent("junit:junit:4.13.2");

// Chain multiple operations
Element project = Element.of("project").attribute("xmlns", "http://maven.apache.org/POM/4.0.0");
project.addNode(Element.of("groupId").textContent("com.example"));
project.addNode(Element.of("artifactId").textContent("my-app"));
project.addNode(Element.of("version").textContent("1.0.0"));

Attribute Management

Basic Attribute Operations

// Set attributes
element.attribute("groupId", "junit");
element.attribute("artifactId", "junit");
element.attribute("version", "4.13.2");

// Get attributes
String groupId = element.attribute("groupId"); // "junit"
String version = element.attribute("version"); // "4.13.2"

// Check if attribute exists
boolean hasScope = element.hasAttribute("scope"); // false

// Remove attribute
element.removeAttribute("version");

Attribute Formatting

Element element = doc.root();

// Attributes preserve their original quote style and whitespace
String scope = element.attribute("scope"); // "test"
String optional = element.attribute("optional"); // "true"

// When serialized, original formatting is maintained:
// scope='test'  optional="true"
String result = editor.toXml();

Text Content

Basic Text Operations

// Set text content
element.textContent("This is the description");

// Get text content
String content = element.textContent(); // "This is the description"

// Get trimmed content (removes leading/trailing whitespace)
String trimmed = element.trimmedTextContent();

Whitespace-Preserving Text

// Original content with whitespace: "   old value   "
String original = item.textContent();

// Update content while preserving whitespace pattern
item.textPreservingWhitespace("new value");

// Result maintains whitespace: "   new value   "
String updated = item.textContent();

Whitespace Management

DomTrip provides fine-grained control over whitespace at multiple levels:

Node-Level Whitespace

// Whitespace before the element
String preceding = element.precedingWhitespace(); // "    "

// Set whitespace programmatically
element.precedingWhitespace("  ");

Element Tag Whitespace

// Whitespace inside opening tag: <element  >
String openTag = element.openTagWhitespace(); // "  "

// Whitespace inside closing tag: </  element>
String closeTag = element.closeTagWhitespace(); // "  "

// Set tag whitespace
element.openTagWhitespace(" ");
element.closeTagWhitespace("");

Inner Element Whitespace

For elements containing only whitespace (no child elements), DomTrip provides specialized handling:

// Whitespace immediately before closing tag: WHITESPACE</parent>
String innerPreceding = parent.innerPrecedingWhitespace(); // "\n"

// Set inner whitespace for elements with only whitespace content
parent.innerPrecedingWhitespace("\n    \n");

Child Element Navigation

Finding Child Elements

// Find first child with name
Optional<Element> groupId = project.child("groupId");
String group = groupId.map(Element::textContent).orElse("unknown");

// Find descendant anywhere in tree
Optional<Element> version = project.descendant("version");

// Check if child exists
boolean hasArtifactId = project.child("artifactId").isPresent();

Element Streams

// Stream all child elements
var allDeps = dependencies.children().collect(Collectors.toList());

// Stream children with specific name
var depElements = dependencies.children("dependency").collect(Collectors.toList());

// Filter and transform
var testDeps = dependencies
        .children("dependency")
        .filter(dep -> "test".equals(dep.attribute("scope")))
        .map(Element::textContent)
        .collect(Collectors.toList());

Namespace Support

Namespace-Aware Operations

// ❌ Snippet 'namespace-operations' not found
// Available snippets: element-creation, attribute-manipulation, modification-tracking, whitespace-preserving-text, xml-declaration-handling, thread-safety-pattern, namespace-inheritance, intelligent-editing, modifying-processing-instructions, processing-instruction-creation, configuration-control, fluent-builder-api, custom-serialization, best-practices-editing, migration-namespace-handling, stream-with-optionals, parsing-exceptions, descendant-streams, indentation-options, document-validation, namespaced-elements, stream-transformations, environment-specific-configurations, xml-declaration, factory-method-best-practices, adding-jdk-toolchains, advanced-attribute-formatting, jackson-xml-object-mapping, stream-aggregation, custom-stream-sources, multi-module-project, encoding-override, whitespace-tracking, complex-stream-queries, basic-attributes, inner-element-whitespace, filtering-streams, adding-servers, inputstream-error-handling, finding-elements-basic, memory-management, configuration-best-practices, doctype-support, encoding-issues, loading-xml-string, input-validation, element-finding, comment-out-single-element, namespace-conflicts, validation-exceptions, version-control, preset-configurations, xml-declaration-parsing, attribute-quote-preservation, safe-element-handling, working-with-existing-documents, adding-elements-simple, modern-java-api, element-addition, namespace-best-practices, advanced-constructor-examples, position-whitespace-preservation, web-service-responses, dom4j-attribute-handling, programmatic-document-creation, jdom-document-loading, removing-elements, commenting-integration, whitespace-configuration, minimal-modification, managing-namespace-declarations, basic-constructors, jackson-xml-simple-parsing, java-dom-document-loading, complex-structure-creation, loading-xml-from-inputstream, parsing-performance, document-traversal, basic-toolchains-creation, commenting-error-handling, finding-processing-instructions, round-trip-verification, xml-stylesheet-declaration, qname-usage, basic-pom-creation, complete-configuration, comment-out-multiple-elements, editing-existing-pom, loading-xml-config, entity-preservation, element-reordering, parsing-documents-with-pis, root-element-namespaces, basic-operations, document-creation, adding-dependencies, configuration-options, node-hierarchy, performance-monitoring, error-context, gradual-migration-phase3, modification-performance, gradual-migration-phase1, gradual-migration-phase2, text-content, element-operations, adding-mirrors, adding-namespace-declarations, adding-new-elements, fluent-chaining, charset-vs-string, buffered-streams, graceful-parsing, element-tag-whitespace, node-serialization, large-file-handling, special-characters, migration-error-handling, text-comment-creation, round-trip-preservation, basic-stream-navigation, bom-handling, encoding-preservation, malformed-xml, element-reordering-before, encoding-management, document-error-handling, processing-instruction-preservation, processing-instructions-with-data, basic-element-creation, complex-namespace-scenario, line-ending-configuration, attribute-operations, serialization-options, resource-cleanup, basic-serialization, error-handling, supported-encodings, migration-memory-usage, validation-with-fallbacks, quick-example, modifying-content, best-practices, using-builder-patterns, maven-pom-updating-version, child-navigation, namespace-validation, complex-structure-preservation, dom4j-document-loading, namespace-preservation, parsing-from-file, whitespace-preservation, document-type-preservation, parsing-from-network, performance-testing, parallel-streams, element-builders, intelligent-inference, simple-document-creation, application-specific-instructions, performance-optimizations, batch-processing, adding-elements-attributes, adding-various-toolchains, fluent-element-addition, php-processing-instructions, quote-style-configuration, basic-editor-usage, dom4j-element-navigation, basic-extensions-creation, logging-integration, spring-configuration, best-practices-preserve-formatting, reusable-factory-methods, basic-configuration, file-based-document-loading, large-file-processing, memory-profiling, configuration-files, text-content-operations, comment-operations, node-whitespace, document-cloning, specific-exception-handling, lossless-round-trip, safe-navigation, configuration-optimization, attribute-formatting, advanced-document-creation, stream-based-navigation, element-builder, doctype-preservation, jdom-element-operations, dual-content-storage, basic-namespace-handling, configuration-system, encoding-detection-fallback, comment-creation, java-dom-element-navigation, stream-modification, complex-reordering, java-dom-creating-elements, namespace-aware-navigation, domtrip-exception, root-element-management, maven-pom-handling, quick-start-basic, dom4j-adding-elements, attribute-creation, safe-element-access, serializer-with-encoding, validation-mode, adding-profiles, maven-pom-adding-dependencies, simple-element-modification, memory-usage, document-serialization, streaming-large-files, namespace-support, batch-attribute-operations, element-streams, cdata-preservation, creating-processing-instructions, optional-based-navigation, available-configuration-methods, namespace-declarations, comment-pi-handling, working-with-namespaces, configuration-patterns, migration-xpath-queries, large-document-processing, batch-operations, fluent-element-builders, java-dom-attributes, installation-test, real-world-maven-example, node-counting, round-trip-processing, editor-integration, finding-elements-by-namespace, best-practices-optional, jdom-text-content, text-node-creation, round-trip-operations, minimal-change-serialization, insert-element-after, comment-management, prefixed-namespaces, basic-format-preservation, advanced-element-creation, stream-chaining, attribute-management, dom4j-serialization, insert-element-before, basic-settings-creation, adding-plugins, automatic-encoding-detection, uncomment-element, batch-element-creation, element-reordering-after, configuration-access, comment-preservation, adding-top-level-nodes, soap-document-handling, element-whitespace, lossless-philosophy, adding-extensions, parsing-from-inputstream, fluent-api, exception-handling, attribute-handling, namespace-attribute-handling, loading-xml-from-file, element-removal, encoding-consistency, insert-element-at, whitespace-inference, creating-namespaced-elements

QName Support

// ❌ Snippet 'qname-support' not found
// Available snippets: element-creation, attribute-manipulation, modification-tracking, whitespace-preserving-text, xml-declaration-handling, thread-safety-pattern, namespace-inheritance, intelligent-editing, modifying-processing-instructions, processing-instruction-creation, configuration-control, fluent-builder-api, custom-serialization, best-practices-editing, migration-namespace-handling, stream-with-optionals, parsing-exceptions, descendant-streams, indentation-options, document-validation, namespaced-elements, stream-transformations, environment-specific-configurations, xml-declaration, factory-method-best-practices, adding-jdk-toolchains, advanced-attribute-formatting, jackson-xml-object-mapping, stream-aggregation, custom-stream-sources, multi-module-project, encoding-override, whitespace-tracking, complex-stream-queries, basic-attributes, inner-element-whitespace, filtering-streams, adding-servers, inputstream-error-handling, finding-elements-basic, memory-management, configuration-best-practices, doctype-support, encoding-issues, loading-xml-string, input-validation, element-finding, comment-out-single-element, namespace-conflicts, validation-exceptions, version-control, preset-configurations, xml-declaration-parsing, attribute-quote-preservation, safe-element-handling, working-with-existing-documents, adding-elements-simple, modern-java-api, element-addition, namespace-best-practices, advanced-constructor-examples, position-whitespace-preservation, web-service-responses, dom4j-attribute-handling, programmatic-document-creation, jdom-document-loading, removing-elements, commenting-integration, whitespace-configuration, minimal-modification, managing-namespace-declarations, basic-constructors, jackson-xml-simple-parsing, java-dom-document-loading, complex-structure-creation, loading-xml-from-inputstream, parsing-performance, document-traversal, basic-toolchains-creation, commenting-error-handling, finding-processing-instructions, round-trip-verification, xml-stylesheet-declaration, qname-usage, basic-pom-creation, complete-configuration, comment-out-multiple-elements, editing-existing-pom, loading-xml-config, entity-preservation, element-reordering, parsing-documents-with-pis, root-element-namespaces, basic-operations, document-creation, adding-dependencies, configuration-options, node-hierarchy, performance-monitoring, error-context, gradual-migration-phase3, modification-performance, gradual-migration-phase1, gradual-migration-phase2, text-content, element-operations, adding-mirrors, adding-namespace-declarations, adding-new-elements, fluent-chaining, charset-vs-string, buffered-streams, graceful-parsing, element-tag-whitespace, node-serialization, large-file-handling, special-characters, migration-error-handling, text-comment-creation, round-trip-preservation, basic-stream-navigation, bom-handling, encoding-preservation, malformed-xml, element-reordering-before, encoding-management, document-error-handling, processing-instruction-preservation, processing-instructions-with-data, basic-element-creation, complex-namespace-scenario, line-ending-configuration, attribute-operations, serialization-options, resource-cleanup, basic-serialization, error-handling, supported-encodings, migration-memory-usage, validation-with-fallbacks, quick-example, modifying-content, best-practices, using-builder-patterns, maven-pom-updating-version, child-navigation, namespace-validation, complex-structure-preservation, dom4j-document-loading, namespace-preservation, parsing-from-file, whitespace-preservation, document-type-preservation, parsing-from-network, performance-testing, parallel-streams, element-builders, intelligent-inference, simple-document-creation, application-specific-instructions, performance-optimizations, batch-processing, adding-elements-attributes, adding-various-toolchains, fluent-element-addition, php-processing-instructions, quote-style-configuration, basic-editor-usage, dom4j-element-navigation, basic-extensions-creation, logging-integration, spring-configuration, best-practices-preserve-formatting, reusable-factory-methods, basic-configuration, file-based-document-loading, large-file-processing, memory-profiling, configuration-files, text-content-operations, comment-operations, node-whitespace, document-cloning, specific-exception-handling, lossless-round-trip, safe-navigation, configuration-optimization, attribute-formatting, advanced-document-creation, stream-based-navigation, element-builder, doctype-preservation, jdom-element-operations, dual-content-storage, basic-namespace-handling, configuration-system, encoding-detection-fallback, comment-creation, java-dom-element-navigation, stream-modification, complex-reordering, java-dom-creating-elements, namespace-aware-navigation, domtrip-exception, root-element-management, maven-pom-handling, quick-start-basic, dom4j-adding-elements, attribute-creation, safe-element-access, serializer-with-encoding, validation-mode, adding-profiles, maven-pom-adding-dependencies, simple-element-modification, memory-usage, document-serialization, streaming-large-files, namespace-support, batch-attribute-operations, element-streams, cdata-preservation, creating-processing-instructions, optional-based-navigation, available-configuration-methods, namespace-declarations, comment-pi-handling, working-with-namespaces, configuration-patterns, migration-xpath-queries, large-document-processing, batch-operations, fluent-element-builders, java-dom-attributes, installation-test, real-world-maven-example, node-counting, round-trip-processing, editor-integration, finding-elements-by-namespace, best-practices-optional, jdom-text-content, text-node-creation, round-trip-operations, minimal-change-serialization, insert-element-after, comment-management, prefixed-namespaces, basic-format-preservation, advanced-element-creation, stream-chaining, attribute-management, dom4j-serialization, insert-element-before, basic-settings-creation, adding-plugins, automatic-encoding-detection, uncomment-element, batch-element-creation, element-reordering-after, configuration-access, comment-preservation, adding-top-level-nodes, soap-document-handling, element-whitespace, lossless-philosophy, adding-extensions, parsing-from-inputstream, fluent-api, exception-handling, attribute-handling, namespace-attribute-handling, loading-xml-from-file, element-removal, encoding-consistency, insert-element-at, whitespace-inference, creating-namespaced-elements

Element Modification

Adding Child Elements

// ❌ Snippet 'adding-children' not found
// Available snippets: element-creation, attribute-manipulation, modification-tracking, whitespace-preserving-text, xml-declaration-handling, thread-safety-pattern, namespace-inheritance, intelligent-editing, modifying-processing-instructions, processing-instruction-creation, configuration-control, fluent-builder-api, custom-serialization, best-practices-editing, migration-namespace-handling, stream-with-optionals, parsing-exceptions, descendant-streams, indentation-options, document-validation, namespaced-elements, stream-transformations, environment-specific-configurations, xml-declaration, factory-method-best-practices, adding-jdk-toolchains, advanced-attribute-formatting, jackson-xml-object-mapping, stream-aggregation, custom-stream-sources, multi-module-project, encoding-override, whitespace-tracking, complex-stream-queries, basic-attributes, inner-element-whitespace, filtering-streams, adding-servers, inputstream-error-handling, finding-elements-basic, memory-management, configuration-best-practices, doctype-support, encoding-issues, loading-xml-string, input-validation, element-finding, comment-out-single-element, namespace-conflicts, validation-exceptions, version-control, preset-configurations, xml-declaration-parsing, attribute-quote-preservation, safe-element-handling, working-with-existing-documents, adding-elements-simple, modern-java-api, element-addition, namespace-best-practices, advanced-constructor-examples, position-whitespace-preservation, web-service-responses, dom4j-attribute-handling, programmatic-document-creation, jdom-document-loading, removing-elements, commenting-integration, whitespace-configuration, minimal-modification, managing-namespace-declarations, basic-constructors, jackson-xml-simple-parsing, java-dom-document-loading, complex-structure-creation, loading-xml-from-inputstream, parsing-performance, document-traversal, basic-toolchains-creation, commenting-error-handling, finding-processing-instructions, round-trip-verification, xml-stylesheet-declaration, qname-usage, basic-pom-creation, complete-configuration, comment-out-multiple-elements, editing-existing-pom, loading-xml-config, entity-preservation, element-reordering, parsing-documents-with-pis, root-element-namespaces, basic-operations, document-creation, adding-dependencies, configuration-options, node-hierarchy, performance-monitoring, error-context, gradual-migration-phase3, modification-performance, gradual-migration-phase1, gradual-migration-phase2, text-content, element-operations, adding-mirrors, adding-namespace-declarations, adding-new-elements, fluent-chaining, charset-vs-string, buffered-streams, graceful-parsing, element-tag-whitespace, node-serialization, large-file-handling, special-characters, migration-error-handling, text-comment-creation, round-trip-preservation, basic-stream-navigation, bom-handling, encoding-preservation, malformed-xml, element-reordering-before, encoding-management, document-error-handling, processing-instruction-preservation, processing-instructions-with-data, basic-element-creation, complex-namespace-scenario, line-ending-configuration, attribute-operations, serialization-options, resource-cleanup, basic-serialization, error-handling, supported-encodings, migration-memory-usage, validation-with-fallbacks, quick-example, modifying-content, best-practices, using-builder-patterns, maven-pom-updating-version, child-navigation, namespace-validation, complex-structure-preservation, dom4j-document-loading, namespace-preservation, parsing-from-file, whitespace-preservation, document-type-preservation, parsing-from-network, performance-testing, parallel-streams, element-builders, intelligent-inference, simple-document-creation, application-specific-instructions, performance-optimizations, batch-processing, adding-elements-attributes, adding-various-toolchains, fluent-element-addition, php-processing-instructions, quote-style-configuration, basic-editor-usage, dom4j-element-navigation, basic-extensions-creation, logging-integration, spring-configuration, best-practices-preserve-formatting, reusable-factory-methods, basic-configuration, file-based-document-loading, large-file-processing, memory-profiling, configuration-files, text-content-operations, comment-operations, node-whitespace, document-cloning, specific-exception-handling, lossless-round-trip, safe-navigation, configuration-optimization, attribute-formatting, advanced-document-creation, stream-based-navigation, element-builder, doctype-preservation, jdom-element-operations, dual-content-storage, basic-namespace-handling, configuration-system, encoding-detection-fallback, comment-creation, java-dom-element-navigation, stream-modification, complex-reordering, java-dom-creating-elements, namespace-aware-navigation, domtrip-exception, root-element-management, maven-pom-handling, quick-start-basic, dom4j-adding-elements, attribute-creation, safe-element-access, serializer-with-encoding, validation-mode, adding-profiles, maven-pom-adding-dependencies, simple-element-modification, memory-usage, document-serialization, streaming-large-files, namespace-support, batch-attribute-operations, element-streams, cdata-preservation, creating-processing-instructions, optional-based-navigation, available-configuration-methods, namespace-declarations, comment-pi-handling, working-with-namespaces, configuration-patterns, migration-xpath-queries, large-document-processing, batch-operations, fluent-element-builders, java-dom-attributes, installation-test, real-world-maven-example, node-counting, round-trip-processing, editor-integration, finding-elements-by-namespace, best-practices-optional, jdom-text-content, text-node-creation, round-trip-operations, minimal-change-serialization, insert-element-after, comment-management, prefixed-namespaces, basic-format-preservation, advanced-element-creation, stream-chaining, attribute-management, dom4j-serialization, insert-element-before, basic-settings-creation, adding-plugins, automatic-encoding-detection, uncomment-element, batch-element-creation, element-reordering-after, configuration-access, comment-preservation, adding-top-level-nodes, soap-document-handling, element-whitespace, lossless-philosophy, adding-extensions, parsing-from-inputstream, fluent-api, exception-handling, attribute-handling, namespace-attribute-handling, loading-xml-from-file, element-removal, encoding-consistency, insert-element-at, whitespace-inference, creating-namespaced-elements

Removing Elements

String xml = createConfigXml();
Document doc = Document.of(xml);
Editor editor = new Editor(doc);

// Remove element by reference
Element database = editor.root().descendant("database").orElseThrow();
editor.removeElement(database);

// Remove by finding first occurrence
Element version = editor.root().descendant("version").orElse(null);
if (version != null) {
    editor.removeElement(version);
}

Advanced Features

Element Cloning

// ❌ Snippet 'element-cloning' not found
// Available snippets: element-creation, attribute-manipulation, modification-tracking, whitespace-preserving-text, xml-declaration-handling, thread-safety-pattern, namespace-inheritance, intelligent-editing, modifying-processing-instructions, processing-instruction-creation, configuration-control, fluent-builder-api, custom-serialization, best-practices-editing, migration-namespace-handling, stream-with-optionals, parsing-exceptions, descendant-streams, indentation-options, document-validation, namespaced-elements, stream-transformations, environment-specific-configurations, xml-declaration, factory-method-best-practices, adding-jdk-toolchains, advanced-attribute-formatting, jackson-xml-object-mapping, stream-aggregation, custom-stream-sources, multi-module-project, encoding-override, whitespace-tracking, complex-stream-queries, basic-attributes, inner-element-whitespace, filtering-streams, adding-servers, inputstream-error-handling, finding-elements-basic, memory-management, configuration-best-practices, doctype-support, encoding-issues, loading-xml-string, input-validation, element-finding, comment-out-single-element, namespace-conflicts, validation-exceptions, version-control, preset-configurations, xml-declaration-parsing, attribute-quote-preservation, safe-element-handling, working-with-existing-documents, adding-elements-simple, modern-java-api, element-addition, namespace-best-practices, advanced-constructor-examples, position-whitespace-preservation, web-service-responses, dom4j-attribute-handling, programmatic-document-creation, jdom-document-loading, removing-elements, commenting-integration, whitespace-configuration, minimal-modification, managing-namespace-declarations, basic-constructors, jackson-xml-simple-parsing, java-dom-document-loading, complex-structure-creation, loading-xml-from-inputstream, parsing-performance, document-traversal, basic-toolchains-creation, commenting-error-handling, finding-processing-instructions, round-trip-verification, xml-stylesheet-declaration, qname-usage, basic-pom-creation, complete-configuration, comment-out-multiple-elements, editing-existing-pom, loading-xml-config, entity-preservation, element-reordering, parsing-documents-with-pis, root-element-namespaces, basic-operations, document-creation, adding-dependencies, configuration-options, node-hierarchy, performance-monitoring, error-context, gradual-migration-phase3, modification-performance, gradual-migration-phase1, gradual-migration-phase2, text-content, element-operations, adding-mirrors, adding-namespace-declarations, adding-new-elements, fluent-chaining, charset-vs-string, buffered-streams, graceful-parsing, element-tag-whitespace, node-serialization, large-file-handling, special-characters, migration-error-handling, text-comment-creation, round-trip-preservation, basic-stream-navigation, bom-handling, encoding-preservation, malformed-xml, element-reordering-before, encoding-management, document-error-handling, processing-instruction-preservation, processing-instructions-with-data, basic-element-creation, complex-namespace-scenario, line-ending-configuration, attribute-operations, serialization-options, resource-cleanup, basic-serialization, error-handling, supported-encodings, migration-memory-usage, validation-with-fallbacks, quick-example, modifying-content, best-practices, using-builder-patterns, maven-pom-updating-version, child-navigation, namespace-validation, complex-structure-preservation, dom4j-document-loading, namespace-preservation, parsing-from-file, whitespace-preservation, document-type-preservation, parsing-from-network, performance-testing, parallel-streams, element-builders, intelligent-inference, simple-document-creation, application-specific-instructions, performance-optimizations, batch-processing, adding-elements-attributes, adding-various-toolchains, fluent-element-addition, php-processing-instructions, quote-style-configuration, basic-editor-usage, dom4j-element-navigation, basic-extensions-creation, logging-integration, spring-configuration, best-practices-preserve-formatting, reusable-factory-methods, basic-configuration, file-based-document-loading, large-file-processing, memory-profiling, configuration-files, text-content-operations, comment-operations, node-whitespace, document-cloning, specific-exception-handling, lossless-round-trip, safe-navigation, configuration-optimization, attribute-formatting, advanced-document-creation, stream-based-navigation, element-builder, doctype-preservation, jdom-element-operations, dual-content-storage, basic-namespace-handling, configuration-system, encoding-detection-fallback, comment-creation, java-dom-element-navigation, stream-modification, complex-reordering, java-dom-creating-elements, namespace-aware-navigation, domtrip-exception, root-element-management, maven-pom-handling, quick-start-basic, dom4j-adding-elements, attribute-creation, safe-element-access, serializer-with-encoding, validation-mode, adding-profiles, maven-pom-adding-dependencies, simple-element-modification, memory-usage, document-serialization, streaming-large-files, namespace-support, batch-attribute-operations, element-streams, cdata-preservation, creating-processing-instructions, optional-based-navigation, available-configuration-methods, namespace-declarations, comment-pi-handling, working-with-namespaces, configuration-patterns, migration-xpath-queries, large-document-processing, batch-operations, fluent-element-builders, java-dom-attributes, installation-test, real-world-maven-example, node-counting, round-trip-processing, editor-integration, finding-elements-by-namespace, best-practices-optional, jdom-text-content, text-node-creation, round-trip-operations, minimal-change-serialization, insert-element-after, comment-management, prefixed-namespaces, basic-format-preservation, advanced-element-creation, stream-chaining, attribute-management, dom4j-serialization, insert-element-before, basic-settings-creation, adding-plugins, automatic-encoding-detection, uncomment-element, batch-element-creation, element-reordering-after, configuration-access, comment-preservation, adding-top-level-nodes, soap-document-handling, element-whitespace, lossless-philosophy, adding-extensions, parsing-from-inputstream, fluent-api, exception-handling, attribute-handling, namespace-attribute-handling, loading-xml-from-file, element-removal, encoding-consistency, insert-element-at, whitespace-inference, creating-namespaced-elements

Modification Tracking

String originalXml = "<project><version>1.0</version><name>test</name></project>";
Editor editor = new Editor(Document.of(originalXml));
Element root = editor.root();

// Unmodified nodes track their state
Element unchanged = root.child("name").orElse(null);
Assertions.assertFalse(unchanged.isModified()); // false

// Modified nodes are tracked
Element changed = root.child("version").orElse(null);
editor.setTextContent(changed, "2.0.0");
Assertions.assertTrue(changed.isModified()); // true

// Only modified sections are reformatted in output
String result = editor.toXml();

Best Practices

Do:

  • Use textPreservingWhitespace() when updating text content to maintain formatting
  • Leverage the fluent API for method chaining
  • Use Optional-returning methods for safe navigation
  • Set inner whitespace fields for elements with only whitespace content
  • Use QName-based methods for namespace-aware operations

Avoid:

  • Directly manipulating the nodes list (use provided methods instead)
  • Ignoring namespace context when working with namespaced elements
  • Using textContent() when you need to preserve whitespace patterns
  • Creating elements without proper namespace declarations

Integration with Editor

Elements work seamlessly with the Editor API for document-level operations:

// ❌ Snippet 'element-editor-integration' not found
// Available snippets: element-creation, attribute-manipulation, modification-tracking, whitespace-preserving-text, xml-declaration-handling, thread-safety-pattern, namespace-inheritance, intelligent-editing, modifying-processing-instructions, processing-instruction-creation, configuration-control, fluent-builder-api, custom-serialization, best-practices-editing, migration-namespace-handling, stream-with-optionals, parsing-exceptions, descendant-streams, indentation-options, document-validation, namespaced-elements, stream-transformations, environment-specific-configurations, xml-declaration, factory-method-best-practices, adding-jdk-toolchains, advanced-attribute-formatting, jackson-xml-object-mapping, stream-aggregation, custom-stream-sources, multi-module-project, encoding-override, whitespace-tracking, complex-stream-queries, basic-attributes, inner-element-whitespace, filtering-streams, adding-servers, inputstream-error-handling, finding-elements-basic, memory-management, configuration-best-practices, doctype-support, encoding-issues, loading-xml-string, input-validation, element-finding, comment-out-single-element, namespace-conflicts, validation-exceptions, version-control, preset-configurations, xml-declaration-parsing, attribute-quote-preservation, safe-element-handling, working-with-existing-documents, adding-elements-simple, modern-java-api, element-addition, namespace-best-practices, advanced-constructor-examples, position-whitespace-preservation, web-service-responses, dom4j-attribute-handling, programmatic-document-creation, jdom-document-loading, removing-elements, commenting-integration, whitespace-configuration, minimal-modification, managing-namespace-declarations, basic-constructors, jackson-xml-simple-parsing, java-dom-document-loading, complex-structure-creation, loading-xml-from-inputstream, parsing-performance, document-traversal, basic-toolchains-creation, commenting-error-handling, finding-processing-instructions, round-trip-verification, xml-stylesheet-declaration, qname-usage, basic-pom-creation, complete-configuration, comment-out-multiple-elements, editing-existing-pom, loading-xml-config, entity-preservation, element-reordering, parsing-documents-with-pis, root-element-namespaces, basic-operations, document-creation, adding-dependencies, configuration-options, node-hierarchy, performance-monitoring, error-context, gradual-migration-phase3, modification-performance, gradual-migration-phase1, gradual-migration-phase2, text-content, element-operations, adding-mirrors, adding-namespace-declarations, adding-new-elements, fluent-chaining, charset-vs-string, buffered-streams, graceful-parsing, element-tag-whitespace, node-serialization, large-file-handling, special-characters, migration-error-handling, text-comment-creation, round-trip-preservation, basic-stream-navigation, bom-handling, encoding-preservation, malformed-xml, element-reordering-before, encoding-management, document-error-handling, processing-instruction-preservation, processing-instructions-with-data, basic-element-creation, complex-namespace-scenario, line-ending-configuration, attribute-operations, serialization-options, resource-cleanup, basic-serialization, error-handling, supported-encodings, migration-memory-usage, validation-with-fallbacks, quick-example, modifying-content, best-practices, using-builder-patterns, maven-pom-updating-version, child-navigation, namespace-validation, complex-structure-preservation, dom4j-document-loading, namespace-preservation, parsing-from-file, whitespace-preservation, document-type-preservation, parsing-from-network, performance-testing, parallel-streams, element-builders, intelligent-inference, simple-document-creation, application-specific-instructions, performance-optimizations, batch-processing, adding-elements-attributes, adding-various-toolchains, fluent-element-addition, php-processing-instructions, quote-style-configuration, basic-editor-usage, dom4j-element-navigation, basic-extensions-creation, logging-integration, spring-configuration, best-practices-preserve-formatting, reusable-factory-methods, basic-configuration, file-based-document-loading, large-file-processing, memory-profiling, configuration-files, text-content-operations, comment-operations, node-whitespace, document-cloning, specific-exception-handling, lossless-round-trip, safe-navigation, configuration-optimization, attribute-formatting, advanced-document-creation, stream-based-navigation, element-builder, doctype-preservation, jdom-element-operations, dual-content-storage, basic-namespace-handling, configuration-system, encoding-detection-fallback, comment-creation, java-dom-element-navigation, stream-modification, complex-reordering, java-dom-creating-elements, namespace-aware-navigation, domtrip-exception, root-element-management, maven-pom-handling, quick-start-basic, dom4j-adding-elements, attribute-creation, safe-element-access, serializer-with-encoding, validation-mode, adding-profiles, maven-pom-adding-dependencies, simple-element-modification, memory-usage, document-serialization, streaming-large-files, namespace-support, batch-attribute-operations, element-streams, cdata-preservation, creating-processing-instructions, optional-based-navigation, available-configuration-methods, namespace-declarations, comment-pi-handling, working-with-namespaces, configuration-patterns, migration-xpath-queries, large-document-processing, batch-operations, fluent-element-builders, java-dom-attributes, installation-test, real-world-maven-example, node-counting, round-trip-processing, editor-integration, finding-elements-by-namespace, best-practices-optional, jdom-text-content, text-node-creation, round-trip-operations, minimal-change-serialization, insert-element-after, comment-management, prefixed-namespaces, basic-format-preservation, advanced-element-creation, stream-chaining, attribute-management, dom4j-serialization, insert-element-before, basic-settings-creation, adding-plugins, automatic-encoding-detection, uncomment-element, batch-element-creation, element-reordering-after, configuration-access, comment-preservation, adding-top-level-nodes, soap-document-handling, element-whitespace, lossless-philosophy, adding-extensions, parsing-from-inputstream, fluent-api, exception-handling, attribute-handling, namespace-attribute-handling, loading-xml-from-file, element-removal, encoding-consistency, insert-element-at, whitespace-inference, creating-namespaced-elements

The Element API provides the foundation for precise XML element manipulation while maintaining formatting integrity and supporting advanced features like namespaces and whitespace preservation.