我想将任何 xml 文件导出到 excel 文件(xls 或制表符分隔)
I want to export any xml file to excel file (xls or tab delimited)
我想将任何 xml 文件导出到 excel(xls 或制表符分隔)。我正在使用 Jquery 打开 xml。我创建了一个递归函数来测试一个节点是否有子节点,这就是我被卡住的地方。我想要的例子:
<form1>
<Q1-2>
<division>Tony</division>
<branch>Sailer Branch</branch>
</Q1-2>
<Q3>
<moreServBusFunctProg>
<Row2>
<servFunctProgr>Awesome Service</servFunctProgr>
</Row2>
<Row3>
<servFunctProgr>Whatever you want</servFunctProgr>
</Row3>
<Row4>
<servFunctProgr>Service with quality</servFunctProgr>
</Row4>
<Row5>
<servFunctProgr>Everything</servFunctProgr>
</Row5>
<Row6>
<servFunctProgr>Function 1</servFunctProgr>
</Row6>
</moreServBusFunctProg>
</Q3>
</form1>
我想检索:
----------------------------------------------------------------------------------------
| division | branch | servFunctProgr | servFunctProgr | servFunctProgr |
----------------------------------------------------------------------------------------
| Tony | Sailer Branch | Awesome Service | Whatever you want | Service with quality |
----------------------------------------------------------------------------------------
现在分享我的递归函数
function showTags(jqueryObject,text,tags)
{
if (jqueryObject.length === 0)
{
return;
}
jqueryObject.children().each(function() {
tags += "\t" + this.nodeName.toLowerCase();
text += $(jqueryObject).contents().text() + "\t" ;
showTags($(this),text, tags);
alert(tags);
});
//alert(text);
}
我解决了我的问题,以防其他人试图做同样的事情。
首先,我必须创建一个对象方法,以便在将变量作为参数传递给递归函数时保留变量的当前值。
function result(txt, tgs, i) {
this.text = txt
this.tags = tgs
this.i = i
}
其次,我将文件文件中的文本作为字符串存储到名为 allText 的变量中。
然后我在调用我的递归函数之前创建并初始化了一些变量:
var allText = $('#editor').text();
i = 0;
txt = "";
tags = "";
rs = new result(txt,tags,i);
showTags($(allText),rs)
最后,我创建了递归函数:
function showTags(jqueryObject,rs) {
tempTag = "";
tag = new Array();
tempTst = "";
tst = new Array();
firstLine = "";
secondLine = "";
if (jqueryObject.children().length === 0)
{
//alert(" in last");
return;
}
else
{
jqueryObject.children().each(function() {
//alert("J suis au else");
tempTag = this.nodeName.toLowerCase();
//alert(tempTag);
if($(this).children().length ===0)
{
$(jqueryObject).find(tempTag).each(function(){
rs.text +=($(this).contents().eq(0).text() +"\t");
rs.tags +=(tempTag + "\t");
//alert("<" + tag [i] + ">" + tst [i] + "</" + tag [i] + ">");
(rs.i)++;
//alert(rs.tags + "\n" + rs.text);
});
}
else
{
showTags($(this),rs);
}
});
}
}
并且,是的,它有效。现在我只检索具有子文本的节点和节点中的文本。我最后所做的是创建一个新的制表符分隔文件,我将在第一行检索到的所有 xml 标记粘贴到其中,并将它们的所有内容粘贴到第二行。
Boom 我已将 xml 转换为制表符分隔文件,我可以用 excel.
打开
我想将任何 xml 文件导出到 excel(xls 或制表符分隔)。我正在使用 Jquery 打开 xml。我创建了一个递归函数来测试一个节点是否有子节点,这就是我被卡住的地方。我想要的例子:
<form1>
<Q1-2>
<division>Tony</division>
<branch>Sailer Branch</branch>
</Q1-2>
<Q3>
<moreServBusFunctProg>
<Row2>
<servFunctProgr>Awesome Service</servFunctProgr>
</Row2>
<Row3>
<servFunctProgr>Whatever you want</servFunctProgr>
</Row3>
<Row4>
<servFunctProgr>Service with quality</servFunctProgr>
</Row4>
<Row5>
<servFunctProgr>Everything</servFunctProgr>
</Row5>
<Row6>
<servFunctProgr>Function 1</servFunctProgr>
</Row6>
</moreServBusFunctProg>
</Q3>
</form1>
我想检索:
----------------------------------------------------------------------------------------
| division | branch | servFunctProgr | servFunctProgr | servFunctProgr |
----------------------------------------------------------------------------------------
| Tony | Sailer Branch | Awesome Service | Whatever you want | Service with quality |
----------------------------------------------------------------------------------------
现在分享我的递归函数
function showTags(jqueryObject,text,tags)
{
if (jqueryObject.length === 0)
{
return;
}
jqueryObject.children().each(function() {
tags += "\t" + this.nodeName.toLowerCase();
text += $(jqueryObject).contents().text() + "\t" ;
showTags($(this),text, tags);
alert(tags);
});
//alert(text);
}
我解决了我的问题,以防其他人试图做同样的事情。 首先,我必须创建一个对象方法,以便在将变量作为参数传递给递归函数时保留变量的当前值。
function result(txt, tgs, i) {
this.text = txt
this.tags = tgs
this.i = i
}
其次,我将文件文件中的文本作为字符串存储到名为 allText 的变量中。 然后我在调用我的递归函数之前创建并初始化了一些变量:
var allText = $('#editor').text();
i = 0;
txt = "";
tags = "";
rs = new result(txt,tags,i);
showTags($(allText),rs)
最后,我创建了递归函数:
function showTags(jqueryObject,rs) {
tempTag = "";
tag = new Array();
tempTst = "";
tst = new Array();
firstLine = "";
secondLine = "";
if (jqueryObject.children().length === 0)
{
//alert(" in last");
return;
}
else
{
jqueryObject.children().each(function() {
//alert("J suis au else");
tempTag = this.nodeName.toLowerCase();
//alert(tempTag);
if($(this).children().length ===0)
{
$(jqueryObject).find(tempTag).each(function(){
rs.text +=($(this).contents().eq(0).text() +"\t");
rs.tags +=(tempTag + "\t");
//alert("<" + tag [i] + ">" + tst [i] + "</" + tag [i] + ">");
(rs.i)++;
//alert(rs.tags + "\n" + rs.text);
});
}
else
{
showTags($(this),rs);
}
});
}
}
并且,是的,它有效。现在我只检索具有子文本的节点和节点中的文本。我最后所做的是创建一个新的制表符分隔文件,我将在第一行检索到的所有 xml 标记粘贴到其中,并将它们的所有内容粘贴到第二行。 Boom 我已将 xml 转换为制表符分隔文件,我可以用 excel.
打开