2017-05-25 60 views
0

我想從Jasper Reports XML文件(我上傳)中提取參數。使用Javascript從XML文件獲取參數名稱

這是我到目前爲止有:

var file = document.getElementById("fileToUpload").files[0]; 
      //You could insert a check here to ensure proper file type 
      var reader = new FileReader(); 
      reader.readAsText(file); 
      reader.onloadend = function(){ 

       var parser = new DOMParser(); 

       var doc = parser.parseFromString(reader.result, "application/xml"); 

       //doc.getElementsByTagName("parameter")[0] 

       var parameters = doc.getElementsByTagName("parameter"); 

然後,我可以做parameters[0]並獲得:

<parameter name=​"report_type_id" class=​"java.lang.Integer">​</parameter>​ 

我要的是參數的名稱。

這是XML的樣子(部分):

<?xml version="1.0" encoding="UTF-8"?> 
<!-- Created with Jaspersoft Studio version 6.3.1.final using JasperReports Library version 6.3.1 --> 
<!-- 2017-05-25T10:35:12 --> 
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Test" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="1fe7af1a-adc5-48b5-a571-37c521a3ccea"> 
    <property name="com.jaspersoft.studio.data.sql.tables" value=""/> 
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="dev_selection"/> 
    <parameter name="report_type_id" class="java.lang.Integer"/> 
    <queryString language="SQL"> 
     <![CDATA[select * from reports where report_type_id = $P{report_type_id}]]> 
    </queryString> 
    <field name="name" class="java.lang.String"/> 
    <field name="sql" class="java.lang.String"/> 
    <field name="report_type_id" class="java.lang.String"/> 
    <background> 

米克

+2

請問'參數[0] .getAttribute( '名')'的工作? – PeterMader

+0

是的,它肯定會!謝謝。 – Mick

+0

獲取所有參數名稱的最簡單方法是什麼? (在這個例子中只有一個,但比現實世界更多)forEach通過參數或更好的東西? – Mick

回答

1
var file = document.getElementById("fileToUpload").files[0]; 
var reader = new FileReader(); 
reader.readAsText(file); 
reader.onloadend = function() { 

    var parser = new DOMParser(); 
    var doc = parser.parseFromString(reader.result, "application/xml"); 
    var params = doc.querySelectorAll('parameter'); 
    var names = []; 
    for (var i = 0; i < params.length; i++) { 
    names.push(params[i].getAttribute('name')); 
    } 

}