SOURCE

console 命令行工具 X clear

                    
>
console
var html = $("#par-0002")[0].outerHTML
var dom = $(html)[0];
htmlToXml(html);

$("#textareas").val();

function htmlToXml(html) {
    var dom = $(html);
    h3ToTitle(dom);
    resetToStep(dom)
    itemToPara(dom);
    textToPara(dom);
    //删除proceduralStep标签外的title
    removePara(dom);
    //删除换行标签
    removeBr(dom);
    dom = initProceduralstep(dom)
    $("#textareas").val(dom[0].innerHTML);
}

function h3ToTitle(dom) {
    var h3s = $(dom).find("h3");
    if (h3s.length != 0) {
        $(h3s[0]).replaceWith("<title>" + h3s[0].innerHTML + "</title>");
    }
    h3s = $(dom).find("h3");
    if (h3s.length != 0) {
        h3ToTitle(dom);
    }
}

function resetToStep(dom) {
    var resets = $(dom).find(".reset");
    if (resets.length != 0) {
        $(resets[0]).replaceWith("<proceduralStep>" + resets[0].innerHTML + "</proceduralStep>");
    }
    var resets = $(dom).find(".reset");
    if (resets.length != 0) {
        resetToStep(dom);
    }
}

function itemToPara(dom) {
    var items = $(dom).find(".item");
    if (items.length != 0) {
        $(items[0]).replaceWith("<para>" + items[0].innerHTML + "</para>");
    }
    var items = $(dom).find(".item");
    if (items.length != 0) {
        itemToPara(dom);
    }
}


function textToPara(dom) {
    var ln = new RegExp("\n", "g");
    var lt = new RegExp("\t", "g");
    var proceduralstep = $(dom).find("proceduralstep");
    for (var i = 0; i < proceduralstep.length; i++) {
        var parent = $(proceduralstep[i]).parent()[0];
        var childNodes = parent.childNodes;
        for (var j = 0; j < childNodes.length; j++) {
            var childNode = childNodes[j];
            if (childNode.nodeName == "#text") {
                var data = childNode.data;
                data = data.replace(ln, "")
                data = data.replace(lt, "")
                if (data != "") {
                    $(childNodes[j]).replaceWith("<para>" + childNode.data + "</para>");
                }

            }
        }

    }

}
function removePara(dom) {
    var proceduralstep = $(dom).find("para proceduralstep");
    if (proceduralstep.length != 0) {
        var parent = $(proceduralstep[0]).parent()[0];
        $(parent).replaceWith(parent.innerHTML)
    }
    proceduralstep = $(dom).find("para proceduralstep");
    if (proceduralstep.length != 0) {
        removePara(dom);
    }
}
function removeBr(dom) {
    var brs = $(dom).find("br");
    if (brs.length != 0) {
        $(brs[0]).remove();
    }
    brs = $(dom).find("br");
    if (brs.length != 0) {
        removeBr(dom);
    }
}

function initProceduralstep(dom) {
    var xml = dom[0].outerHTML;
    var RTitle = new RegExp("<title>", "g");

    xml = xml.replace(RTitle, "<sr/><title>");
    var titles = $(xml).find("title");
 
    for (var i = 0; i < titles.length; i++) {
        var parent = $(titles[i]).parent()[0];
        var children = $(parent).children("title");
        var length = children.length;
        if (titles[i] == children[0]) {
            xml = xml.replace("<sr/>", "");
        } else {
            xml = xml.replace("<sr/>", "</proceduralstep><proceduralstep>");
        }
    }
    return $(xml);
}
<div class="item" id="par-0002">asdasdas<br>
	<div class="reset">
		<h3 class="h3item">标题</h3>
		<div class="item">asdasdasda<br>
			<div class="reset">
				<h3 class="h3item">标题</h3>
				<div class="item">asdasdasd<br>
					<div class="reset">
						<h3 class="h3item">标题</h3>
						<div class="item">sadasd</div>
					</div>
				</div>
			</div>
		</div>
		<h3 class="h3item">标题</h3>
		<div class="item">asdasda</div>
		<h3 class="h3item">标题</h3>
		<div class="item">asdasd</div>
	</div>
</div>
<textarea id="textareas" style="width:100%;height:300px"></textarea>
.reset {
    line-height: 1.6;
    counter-reset: itemcounter;
    border: 1px dashed lightgray;
}

.item > .reset  {
    padding-left: 20px;
}



.h3item:before {
    content: counters(itemcounter,
    ".") ".";
    counter-increment: itemcounter;
}

本项目引用的自定义外部资源