diff --git a/src/file/xml-components/imported-xml-component.spec.ts b/src/file/xml-components/imported-xml-component.spec.ts
index b250cc852b..e896633850 100644
--- a/src/file/xml-components/imported-xml-component.spec.ts
+++ b/src/file/xml-components/imported-xml-component.spec.ts
@@ -1,95 +1,81 @@
-// import { expect } from "chai";
-// import { convertToXmlComponent, ImportedXmlComponent } from "./";
+import { expect } from "chai";
+import { Element, xml2js } from "xml-js";
-// const xmlString = `
-//
-//
-// some value
-//
-//
-// Text 1
-//
-//
-// Text 2
-//
-//
-// `;
+import { ImportedXmlComponent } from "./";
+import { convertToXmlComponent } from "./imported-xml-component";
-// // tslint:disable:object-literal-key-quotes
-// const importedXmlElement = {
-// "w:p": {
-// _attr: { "w:one": "value 1", "w:two": "value 2" },
-// "w:rPr": { "w:noProof": "some value" },
-// "w:r": [{ _attr: { active: "true" }, "w:t": "Text 1" }, { _attr: { active: "true" }, "w:t": "Text 2" }],
-// },
-// };
-// // tslint:enable:object-literal-key-quotes
+const xmlString = `
+
+
+ some value
+
+
+ Text 1
+
+
+ Text 2
+
+
+ `;
-// const convertedXmlElement = {
-// deleted: false,
-// rootKey: "w:p",
-// root: [
-// {
-// deleted: false,
-// rootKey: "w:rPr",
-// root: [{ deleted: false, rootKey: "w:noProof", root: ["some value"] }],
-// },
-// {
-// deleted: false,
-// rootKey: "w:r",
-// root: [{ deleted: false, rootKey: "w:t", root: ["Text 1"] }],
-// _attr: { active: "true" },
-// },
-// {
-// deleted: false,
-// rootKey: "w:r",
-// root: [{ deleted: false, rootKey: "w:t", root: ["Text 2"] }],
-// _attr: { active: "true" },
-// },
-// ],
-// _attr: { "w:one": "value 1", "w:two": "value 2" },
-// };
+const convertedXmlElement = {
+ deleted: false,
+ root: [
+ {
+ deleted: false,
+ rootKey: "w:p",
+ root: [
+ { deleted: false, rootKey: "w:rPr", root: [{ deleted: false, rootKey: "w:noProof", root: ["some value"] }] },
+ { deleted: false, rootKey: "w:r", root: [{ deleted: false, rootKey: "w:t", root: ["Text 1"] }], _attr: { active: "true" } },
+ { deleted: false, rootKey: "w:r", root: [{ deleted: false, rootKey: "w:t", root: ["Text 2"] }], _attr: { active: "true" } },
+ ],
+ _attr: { "w:one": "value 1", "w:two": "value 2" },
+ },
+ ],
+ rootKey: undefined,
+};
-// describe("ImportedXmlComponent", () => {
-// let importedXmlComponent: ImportedXmlComponent;
+describe("ImportedXmlComponent", () => {
+ let importedXmlComponent: ImportedXmlComponent;
-// beforeEach(() => {
-// const attributes = {
-// someAttr: "1",
-// otherAttr: "2",
-// };
-// importedXmlComponent = new ImportedXmlComponent("w:test", attributes);
-// importedXmlComponent.push(new ImportedXmlComponent("w:child"));
-// });
+ beforeEach(() => {
+ const attributes = {
+ someAttr: "1",
+ otherAttr: "2",
+ };
+ importedXmlComponent = new ImportedXmlComponent("w:test", attributes);
+ importedXmlComponent.push(new ImportedXmlComponent("w:child"));
+ });
-// describe("#prepForXml()", () => {
-// it("should transform for xml", () => {
-// const converted = importedXmlComponent.prepForXml();
-// expect(converted).to.eql({
-// "w:test": [
-// {
-// _attr: {
-// someAttr: "1",
-// otherAttr: "2",
-// },
-// },
-// {
-// "w:child": [],
-// },
-// ],
-// });
-// });
-// });
+ describe("#prepForXml()", () => {
+ it("should transform for xml", () => {
+ const converted = importedXmlComponent.prepForXml();
+ expect(converted).to.eql({
+ "w:test": [
+ {
+ _attr: {
+ someAttr: "1",
+ otherAttr: "2",
+ },
+ },
+ {
+ "w:child": [],
+ },
+ ],
+ });
+ });
+ });
-// it("should create XmlComponent from xml string", () => {
-// const converted = ImportedXmlComponent.fromXmlString(xmlString);
-// expect(converted).to.eql(convertedXmlElement);
-// });
+ it("should create XmlComponent from xml string", () => {
+ const converted = ImportedXmlComponent.fromXmlString(xmlString);
+ expect(converted).to.eql(convertedXmlElement);
+ });
-// describe("convertToXmlComponent", () => {
-// it("should convert to xml component", () => {
-// const converted = convertToXmlComponent("w:p", importedXmlElement["w:p"]);
-// expect(converted).to.eql(convertedXmlElement);
-// });
-// });
-// });
+ describe("convertToXmlComponent", () => {
+ it("should convert to xml component", () => {
+ const xmlObj = xml2js(xmlString, { compact: false }) as Element;
+ const converted = convertToXmlComponent(xmlObj);
+ expect(converted).to.eql(convertedXmlElement);
+ });
+ });
+});
diff --git a/src/file/xml-components/imported-xml-component.ts b/src/file/xml-components/imported-xml-component.ts
index 8fa8f9746b..7485c651e0 100644
--- a/src/file/xml-components/imported-xml-component.ts
+++ b/src/file/xml-components/imported-xml-component.ts
@@ -1,5 +1,5 @@
// tslint:disable:no-any
-import { Element as XmlElement } from "xml-js";
+import { Element as XmlElement, xml2js } from "xml-js";
import { IXmlableObject, XmlComponent } from ".";
/**
@@ -9,6 +9,7 @@ import { IXmlableObject, XmlComponent } from ".";
export function convertToXmlComponent(element: XmlElement): ImportedXmlComponent | string | undefined {
switch (element.type) {
+ case undefined:
case "element":
const xmlComponent = new ImportedXmlComponent(element.name as string, element.attributes);
const childElments = element.elements || [];
@@ -30,6 +31,15 @@ export function convertToXmlComponent(element: XmlElement): ImportedXmlComponent
* Represents imported xml component from xml file.
*/
export class ImportedXmlComponent extends XmlComponent {
+ /**
+ * Converts the xml string to a XmlComponent tree.
+ *
+ * @param importedContent xml content of the imported component
+ */
+ public static fromXmlString(importedContent: string): ImportedXmlComponent {
+ const xmlObj = xml2js(importedContent, { compact: false }) as XmlElement;
+ return convertToXmlComponent(xmlObj) as ImportedXmlComponent;
+ }
/**
* Converts the xml string to a XmlComponent tree.
*