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);
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;
}