我在netbeans 8.0.2中使用Maven项目来读取XML文件。 xml文件的模板已作为依赖项添加到项目的settings.xml文件中。我能够使用JAXB读取文件并在控制台中成功打印输出。我想在CSV文件中编写相同的控制台输出。请帮忙
Java代码......
private static void PUE_Checker(String fileName) {
try {
//Unmarshall the DDF File
ElementDefinitionPackage elementDefinitionPackage = unmarshall(fileName);
//For Each Element Definition Model Defined in Package Check If PUE Rules are defined in Datapoint Section and Rules Section
for (ElementDefinitionModel model : elementDefinitionPackage.getElementDefinitionModels()) {
//Check in Datapoints for Each Supported Protocol
for (SupportedProtocolType supportedProtocol : model.getSupportedprotocols().getSupportedProtocols()) {
boolean powerConsumedDataPointFound = false;
boolean energyIntervalDataPointFound = false;
for (DatapointType datapoint : supportedProtocol.getDatapoints().getDatapoints()) {
if (datapoint.getProgrammaticName().equalsIgnoreCase(PWR_CONSUMED_DP)) {
powerConsumedDataPointFound = true;
}
if (datapoint.getProgrammaticName().equalsIgnoreCase(ENRG_INTERVAL_DP)) {
energyIntervalDataPointFound = true;
}
}
if (!powerConsumedDataPointFound && !energyIntervalDataPointFound) {
System.out.println(" Both PUE Data point not defined for Model: " + model.getModelInSymbol() + ", Model Qualifier: " + model.getModelQualifierInSymbol() + " and Protocol: " + supportedProtocol.getProtocolName()+ ", Symbol Tag: " + model.getSymbolTag());
}else
if (!powerConsumedDataPointFound) {
System.out.println("Power Consumed PUE Data point not defined for Model: " + model.getModelInSymbol() + ", Model Qualifier: " + model.getModelQualifierInSymbol() + " and Protocol: " + supportedProtocol.getProtocolName()+ ", Symbol Tag: " + model.getSymbolTag());
}else
if (!energyIntervalDataPointFound) {
System.out.println("Energy Interval PUE Data point not defined for Model: " + model.getModelInSymbol() + ", Model Qualifier: " + model.getModelQualifierInSymbol() + " and Protocol: " + supportedProtocol.getProtocolName()+ ", Symbol Tag: " + model.getSymbolTag());
}
}
// Check in Rules Section
boolean powerConsumedRuleFound = false;
boolean energyIntervalRuleFound = false;
for (Rule rulesType : model.getRules().getRules()) {
if (rulesType.getCollection() != null) {
if (rulesType.getCollection().getName().equalsIgnoreCase(PWR_CONSUMED_RULE)) {
powerConsumedRuleFound = true;
}
if (rulesType.getCollection().getName().equalsIgnoreCase(ENRG_INTERVAL_RULE)) {
energyIntervalRuleFound = true;
}
}
}
if (!powerConsumedRuleFound && !energyIntervalRuleFound) {
System.out.println("Both PUE Rules line not defined for Model: " + model.getModelInSymbol() + ", Model Qualifier: " + model.getModelQualifierInSymbol()+ ", Symbol Tag: " + model.getSymbolTag());
}else
if (!powerConsumedRuleFound) {
System.out.println("Power Consumed PUE Rule line not defined for Model: " + model.getModelInSymbol() + ", Model Qualifier: " + model.getModelQualifierInSymbol()+ ", Symbol Tag: " + model.getSymbolTag());
}else
if (!energyIntervalRuleFound) {
System.out.println("Energy Interval PUE Rules line not defined for Model: " + model.getModelInSymbol() + ", Model Qualifier: " + model.getModelQualifierInSymbol()+ ", Symbol Tag: " + model.getSymbolTag());
}
}
} catch (JAXBException ex) {
Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
//ex.printStackTrace();
}
}
private static ElementDefinitionPackage unmarshall(String file) throws JAXBException {
return (ElementDefinitionPackage) JAXBContext.newInstance(ElementDefinitionPackage.class).createUnmarshaller().unmarshal(new File(file));
}
当前输出:
Both PUE Data point not defined for Model: AC500-ECO, Model Qualifier: PM564-R-AC and Protocol: MODBUS/RS-485, Symbol Tag: ABBAC500-ECOPM564-R-AC
Both PUE Data point not defined for Model: AC500-ECO, Model Qualifier: PM564-R-AC and Protocol: MODBUS/TCP, Symbol Tag: ABBAC500-ECOPM564-R-AC
Both PUE Rules line not defined for Model: AC500-ECO, Model Qualifier: PM564-R-AC, Symbol Tag: ABBAC500-ECOPM564-R-AC
期望的输出: