import { parseSafeXml, type ParsedXmlElement } from "./parser"; export interface DeadPropertyFragment { nsUri: string; localName: string; xmlValue: string; } function collectNamespaces(element: ParsedXmlElement): Record { const namespaces: Record = {}; for (const [name, value] of Object.entries(element.attributes)) { if (name === "xmlns") namespaces[""] = value; if (name.startsWith("xmlns:")) namespaces[name.slice("xmlns:".length)] = value; } return namespaces; } function splitName(name: string): { prefix: string; localName: string } { const index = name.indexOf(":"); if (index === -1) return { prefix: "", localName: name }; return { prefix: name.slice(0, index), localName: name.slice(index + 1) }; } export function extractDeadPropertyFragment(xml: string): DeadPropertyFragment { const { root } = parseSafeXml(xml); const namespaces = collectNamespaces(root); const { prefix, localName } = splitName(root.name); return { nsUri: namespaces[prefix] ?? "", localName, xmlValue: xml, }; }