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.