1. import json
  2. from collections import OrderedDict
  3. def serialize_dom_element(element):
  4. """Serializes a DOM element to a JSON-compatible dictionary."""
  5. if not hasattr(element, '__dict__'):
  6. return str(element) # Fallback for non-element objects
  7. data = OrderedDict()
  8. for key, value in element.__dict__.items():
  9. if isinstance(value, (dict, list)):
  10. data[key] = serialize_dom_element(value) # Recursive call for nested structures
  11. elif value is None:
  12. data[key] = None
  13. else:
  14. data[key] = value
  15. return data
  16. def deserialize_dom_element(data):
  17. """Deserializes a JSON-compatible dictionary back to a DOM element."""
  18. if data is None:
  19. return None
  20. if isinstance(data, dict):
  21. return create_dom_element_from_dict(data)
  22. else:
  23. return data # Handle cases where it's not a dict (e.g., string)
  24. def create_dom_element_from_dict(data):
  25. """Helper function to create a DOM element from a dictionary."""
  26. element = {}
  27. for key, value in data.items():
  28. if isinstance(value, dict):
  29. element[key] = create_dom_element_from_dict(value)
  30. elif isinstance(value, list):
  31. element[key] = [create_dom_element_from_dict(item) for item in value]
  32. else:
  33. element[key] = value
  34. return element

Add your comment