我正在处理java代码以从XML文件中读取和检索特定数据,然后将其上传到数据库,我需要检索的数据由具有名称和内部节点的完整路径的CSV确定XML文件,在阅读CSV
文件后,我将所有路径存储在List
String
中,CSV文件如下所示:
XMLPaths.CSV
XMLDate,Invoice/cbc:IssueDate
XMLSupplierName,Invoice/cac:AccountingSupplierParty/cac:Party/cac:PartyLegalEntity/cbc:RegistrationName
XMLRUC,Invoice/cac:AccountingSupplierParty/cbc:CustomerAssignedAccountID
XMLDocType,Invoice/cbc:InvoiceTypeCode
XMLID,Invoice/cbc:ID
XMLCustomerID,Invoice/cac:AccountingCustomerParty/cbc:CustomerAssignedAccountID
XMLCustomerName,Invoice/cac:AccountingCustomerParty/cac:Party/cac:PartyLegalEntity/cbc:RegistrationName
XMLMonetaryTotal,Invoice/cac:LegalMonetaryTotal/cbc:PayableAmount/
XMLCurrency,Invoice/cbc:DocumentCurrencyCode
目前正在使用DOM
一般性地读取XML文件,并将来自所有节点的数据存储在名为XMLData
的自定义类中,然后将每个XMLData
对象添加到List
} XMLData
个对象,Tag
包含节点的完整路径,就像CSV
文件中定义的那样
XMLData.java
public class XMLData {
public String Tag;
public String Value;
public XMLData() {
Tag= "";
Value= "";
}
}
之后,我需要从CSV
的{{1}}中选择List
文件定义的元素并将其上传到XMLData
,最简单的解决方案是搜索列表中的每个项目,如下所示:
database
但我认为如果 List <XMLData> XMLDataList = GetData();
List <String> listOfPaths = GetPaths();
for (String Path : listOfPaths) {
for (XMLData Aux: XMLDataList){
if (Aux.Tag.equals(Path))
UploadToDB(Aux);
}
}
的{{1}}和List
的{{1}}非常大,这会非常有用,是否有更有效的方法这个搜索?