gpt4 book ai didi

java - 读取条件年龄 >30 的 XML 文件并在 Java 控制台中输出

转载 作者:太空宇宙 更新时间:2023-11-04 14:13:02 25 4
gpt4 key购买 nike

我正在 Eclipse 中读取 XML 文件,并且我的输出位于控制台中。到目前为止,我成功输出了我的条目。但我需要打印我的员工超过 30 岁的条目。

这是我的 XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<company>
<name>CompanyName</name>
<employees id="0">
<name>employee name0</name>
<age>33</age>
<role>tester</role>
<gen>male</gen>
</employees>
<employees id="1">
<name>employee name1</name>
<age>18</age>
<role>tester</role>
<gen>female</gen>
</employees>
<employees id="2">
<name>employee name2</name>
<age>38</age>
<role>developer</role>
<gen>male</gen>
</employees>
</company>

这就是我一直在尝试的:

if (qName.equals("age"))
{
int age2;
String age=attributes.getValue("age");
age2=Integer.ParseInt(age)
if (age2>30){
System.out.println("\tAge="+age2);
}

所以我想打印

id=0 的员工和 id=2 的员工,因为他们的年龄 >30

最佳答案

考虑到您正在使用 SAXParser 并且这段代码位于重写的方法 startElement 内您需要覆盖 charactersendElement也。像这样的事情:

class Handler extends DefaultHandler {

String currentElement;
String currentAgeValue;
String currentNameValue;

@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
super.startElement(uri, localName, qName, attributes);
currentElement = qName;
}

@Override
public void characters(char[] ch, int start, int length) throws SAXException {
super.characters(ch, start, length);
switch(currentElement) {
case "age":
currentAgeValue = new String(ch, start, length);
break;
case "name":
currentNameValue = new String(ch, start, length);
break;
}
}

@Override
public void endElement(String uri, String localName, String qName) throws SAXException {
super.endElement(uri, localName, qName);
if(qName.equals("employees")) {
int age = Integer.parseInt(currentAgeValue);
if(age > 30) {
System.out.println("Name:" + currentNameValue+", Age:" + age);
}
}
}

public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
String xml = "<company><name>CompanyName</name><employees id=\"0\"><name>employee name0</name><age>33</age><role>tester</role><gen>male</gen></employees><employees id=\"1\"><name>employee name1</name><age>18</age><role>tester</role><gen>female</gen></employees><employees id=\"2\"><name>employee name2</name><age>38</age><role>developer</role><gen>male</gen></employees></company>";
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
saxParser.parse(new InputSource(new StringReader(xml)), new Handler());
}

输出将是:

Name:employee name0, Age:33
Name:employee name2, Age:38

characters方法在读取给定元素的值时调用,属性参数 startElement<employees id="2"> 中保留 id 等 XML 属性的值.

关于java - 读取条件年龄 >30 的 XML 文件并在 Java 控制台中输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28065435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com