我当前遇到的问题几乎与此处回答的问题完全相同Convert XML file to CSV。我承认我对 Java 的了解还不够,无法自己编写几乎如此复杂的任何东西。我可以用其他几种语言编写那么长的脚本,但 Java 对我来说从来没有任何意义。但是,我通常可以很好地适应其他程序。我坚持这一点,因为当我尝试从接受的答案运行代码(没有任何修改)时,我得到以下...
>java App
Exception in thread "main" java.lang.NullPointerException
at App$HeaderHandler.addItemHeader(App.java:76)
at App$HeaderHandler.endElement(App.java:99)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:601)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1782)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2939)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at App.main(App.java:23)
现在,我知道这意味着我在第 76 行至少有一个变量未初始化,它在不应该初始化时具有空值。我尝试通过将它放在String headerName = new String("default");
它之前来初始化它,这甚至阻止了它编译:
App.java:76: headerName is already defined in addItemHeader(java.lang.String)
String headerName = new String("default");
我不知道从那里去哪里。这是第 75-81 行的代码
private void addItemHeader(String headerName) {
if (itemHeader.containsKey(headerName)) {
itemHeader.put(headerName, itemHeader.get(headerName) + 1);
} else {
itemHeader.put(headerName, 1);
}
}
如果我能得到这个代码,或者如果有人想建议另一种方法,或者任何类似的代码,我相信我可以做一些小的改动并调整代码。
如果没有人能弄清楚如何修复 NullPointerException,我也将接受任何其他采用类似于以下 XML 的 Java 解决方案。
<?xml version="1.0" encoding="ISO-10646-UCS-2" standalone="yes" ?>
<ROOT DATE_CREATED="1970-01-01 00:00:01" CREATED_BY="Log Parser">
<ROW>
<EventLog>
Exception
</EventLog>
<RecordNumber>
1381938446
</RecordNumber>
<Message>
An Error Occurred
</Message>
<Data>
</Data>
</ROW>
</ROOT>
并将其转换为带有任何分隔符的 Rows 的平面列表,例如...
Exception|1381938446|An Error Occurred||
Exception|1382348446|Next Error|Some Data Here|