console
var hts = $("#par-0002")[0].outerHTML
var dom =$(hts)[0];
var xml = htmlToXml(dom);
$("#textareas").val(xml);
function htmlToXml(dom) {
dom = contentsToPara(dom);
dom = h3ToTitle(dom);
divToStep(dom);
return dom.innerHTML;
}
var en1Reg = new RegExp("\n", "g");
var en2Reg = new RegExp("\t", "g");
function contentsToPara(dom) {
var childNodes = dom.childNodes;
for (var i = 0; i < childNodes.length; i++) {
var childNode = childNodes[i];
var childNode2 = childNode.childNode;
if (childNode != undefined) {
contentsToPara(childNode);
}
if (dom.className == "item") {
if (childNode.nodeName == "#text") {
var data = childNode.data;
data = data.replace(en1Reg, "")
data = data.replace(en2Reg, "")
if (data.trim() == "") {
$(childNode[i]).remove();
} else {
$(childNodes[i]).replaceWith("<para>" + childNodes[i].textContent + "</para>")
}
}
}
}
return dom;
}
function h3ToTitle(dom) {
var h3s = $(dom).find("h3");
for (var i = 0; i < h3s.length; i++) {
$(h3s[i]).replaceWith("<title>" + h3s[i].innerHTML + "</title>")
}
h3s = $(dom).find("h3");
return dom;
}
function divToStep(dom) {
var divs = $(dom).find("div");
for (var i = 0; i < divs.length;i++) {
var div = divs[i];
if (div.className == "reset") {
console.log(i)
$(divs[0]).replaceWith("<proceduralStep>" + divs[0].innerHTML + "</proceduralStep>")
}else{
i++
}
}
}
<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;
}