一、打印模板解析
/*
///cyberwin_offline_database_printtemp.js
未来之窗打印模板解析技术 2024-09
*/
class CyberWin_Database_printtemp_KV {
constructor() {
this.data = {};
this.line_count = 0 ;
}
解析(数据) {
// this.data[key] = value;
this.line_count = 0 ;
this.data = {};
const parser = new DOMParser();
const xmlDoc = parser.parseFromString(数据, 'application/xml');
console.log("未来之窗打印");
// console.log(xmlDoc);
const targetElement = xmlDoc.getElementsByTagName('Report')[0];
if (targetElement) {
// console.log(targetElement.textContent);
}
const rootElement = xmlDoc.getElementsByTagName('Report')[0];
const childElements = rootElement.getElementsByTagName('ReportPage')[0];
console.log("打印2=ReportPage");
console.log(childElements);
const childElements_页面 = childElements.childNodes;
for (let i = 0; i < childElements_页面.length; i++) {
console.log("打印3=ReportPage="+childElements_页面[i].nodeType+",Node.ELEMENT_NODE="+Node.ELEMENT_NODE);
console.log(childElements_页面[i]);
// console.log(childElements_页面[i].tagName + ': ' + childElements_页面[i].textContent);
// if (childElements_页面[i].nodeType === Node.ELEMENT_NODE) {
// if (childElements_页面[i].nodeType ===3) {
if (childElements_页面[i] != "#text") {
console.log("打印4="+childElements_页面[i].tagName );
if("DataBand" == childElements_页面[i].tagName || "PageHeaderBand" == childElements_页面[i].tagName){
const childElements_打印 = childElements_页面[i].childNodes;
for (let j = 0; j < childElements_打印.length; j++) {
console.log("打印明细");
console.log("打印4 nodeType="+childElements_打印[j].nodeType);
if (childElements_打印[j] == "#text") {
console.log("打印5,明细不满足");
continue;
}
if (childElements_打印[j].nodeType ==3) {
console.log("删除空行");
continue;
}
console.log(childElements_打印[j]);
var Font = childElements_打印[j].getAttribute('Font');
var CanGrow = childElements_打印[j].getAttribute('CanGrow');
var content = childElements_打印[j].getAttribute('Text');
//Left
var x =childElements_打印[j].getAttribute('Left');
var y =childElements_打印[j].getAttribute('Top');
console.log(content);
//Font="宋体, 9pt"
var 字体分离array = Font.split(', ');
var 字体_大小 =字体分离array[1].replace('pt','');
if(x){
}else{
x=0;
}
if(y){
}else{
y=0;
}
if(CanGrow){
CanGrow ="Y";
}else{
CanGrow = "N";
}
console.log(childElements_打印[j].tagName + ',Top: ' + Font +" left="+x);
var 打印条目 ={type:'text',x:x,y:y,content:content,CanGrow:CanGrow,Font:Font,Fontsize:字体_大小};
this.data[this.line_count] = 打印条目;
this.line_count=this.line_count+1;
}
}
}
}
return {count:this.line_count,data:this.data};
}
}
二、代码解释
在这神秘的修仙代码之境,有一神奇之“类”,名曰“CyberWin_Database_printtemp_KV”。
此“类”初建之时,犹如铸就一座空灵之库,其内部数据为空,且行数计数为零。
而后,有一神奇之法“解析”,能洞悉传入之神秘“数据”。
先是将一切归空重置,再以仙法“DOMParser”解析此“数据”,化为神秘之“xmlDoc”。
继而探寻其中特定元素,遍历诸多节点。
于层层节点之中,筛选甄别,获取各种属性与内容。
如同在仙阵之中,寻觅珍贵的灵能符文与奇妙法诀。
最后,将所得之“打印条目”精心收藏,行数计数递增,并以所得成果回传。
此过程犹如在仙法秘境中探索寻宝,步步精妙,玄机暗藏。
三、阿雪技术观
拥抱开源与共享,见证科技进步奇迹,畅享人类幸福时光!
让我们积极投身于技术共享的浪潮中,不仅仅是作为受益者,更要成为贡献者。无论是分享自己的代码、撰写技术博客,还是参与开源项目的维护和改进,每一个小小的举动都可能成为推动技术进步的巨大力量
扫码,可学习更多