如何以此格式打印此 xml 文件:
GM体育|类别 |锦标赛 | TeamAName - TeamBName:TeamAScore - TeamBScore
<?xml version="1.0" encoding="UTF-8"?>
<Data>
<GMSport SportId="1">
<Name language="en">Soccer</Name>
<Category CategoryId="34">
<Name language="en">Australia</Name>
<Tournament TournamentId="144">
<Name language="en">Hyundai A-League</Name>
<Match MatchId="4616735">
<MatchDate>2011-01-05T07:30:00</MatchDate>
<TeamA TeamId="1029369">
<Name language="en">Wellington Phoenix FC</Name>
</TeamA>
<TeamB TeamId="529088">
<Name language="en">Melbourne Victory</Name>
</TeamB>
<Status Code="0">
<Name language="en">Not started</Name>
</Status>
<Winner>0</Winner>
</Match>
</Tournament>
</Category>
</GMSport>
</Data>
我正在尝试
public static void main(String[] args) {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = null;
try {
docBuilder = factory.newDocumentBuilder();
} catch (ParserConfigurationException ex) {
Logger.getLogger(DomeParser.class.getName()).log(Level.SEVERE, null, ex);
}
Document doc = docBuilder.parse (new File("test.xml"));
NodeList list = doc.getElementsByTagName("*");
for (int i = 0; i < list.getLength(); i++) {
Element element = (Element) list.item(i);
String nodeName = element.getNodeName();
if (nodeName.equals("GMSport")) {
System.out.print(nodeName+"|");
}
else if (nodeName.equals("Category")) {
System.out.print(nodeName+"|");
}
else if (nodeName.equals("Tournament")) {
System.out.print(nodeName+"|");
}
}
} catch (SAXException ex) {
Logger.getLogger(DomeParser.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(DomeParser.class.getName()).log(Level.SEVERE, null, ex);
}
}
最佳答案
- 创建适当的领域类,例如体育、类别、锦标赛等。
- 从 XML 创建域类(您可以像当前一样使用 JAXB 或原始 DOM)
- 一旦构建了域类,您就可以使用它们以任何您想要的方式打印它。
在您当前的代码中,您将解析和报告/打印逻辑混合到不可扩展的代码中。
关于java - java中使用Dom解析xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8913810/