gpt4 book ai didi

java - 使用 SAXParser 解析 XML 文件

转载 作者:行者123 更新时间:2023-12-02 08:15:30 26 4
gpt4 key购买 nike

我对此很陌生,那么为什么当我想在 StartElement() 中打印 NAME 元素的值时,对于所有 3 个元素,它都会打印 null ?

class Test {
public static void main(String args[]) {
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
DefaultHandler handler = new DefaultHandler() {


public void startElement(String uri, String localName, String qName, Attributes attributes)
throws SAXException {
if (qName.equals("NAME")) {
String str = attributes.getValue("NAME");
System.out.println(str);

}
}
};

saxParser.parse(new InputSource(new StringReader(xmlString)), handler);
} catch (Exception e) {
e.printStackTrace();
}
}

static String xmlString = "<PHONEBOOK>" +
" <PERSON>" +
" <NAME>Joe Wang</NAME>" +
" <EMAIL>joe@yourserver.com</EMAIL>" +
" <TELEPHONE>202-999-9999</TELEPHONE>" +
" <WEB>www.java2s.com</WEB>" +
" </PERSON>" +
" <PERSON> " +
"<NAME>Karol</NAME>" +
" <EMAIL>karol@yourserver.com</EMAIL>" +
" <TELEPHONE>306-999-9999</TELEPHONE>" +
" <WEB>www.java2s.com</WEB>" +
" </PERSON>" +
" <PERSON>" +
" <NAME>Green</NAME>" +
" <EMAIL>green@yourserver.com</EMAIL>" +
" <TELEPHONE>202-414-9999</TELEPHONE>" +
" <WEB>www.java2s.com</WEB>" +
" </PERSON>" +
" </PHONEBOOK>";
}

最佳答案

您的 XML 没有任何属性。所以这个:

String str = attributes.getValue("NAME");
System.out.println(str);

...永远不会打印任何内容。

从外观上看,您想要打印 NAME 元素的内容。因此,当您位于 NAME 元素中时,您需要处理 characters 事件。

顺便问一下,您必须使用SAX吗?根据我的经验,与使用类似 DOM 的模型相比,这是一种痛苦(例如使用 JDOM 或其他 API - 内置的有点痛苦)。

<小时/>

如果您可以控制 XML,则另一种方法是开始使用属性:

<PERSON NAME="Joe Wang"
EMAIL="joe@yourserver.com"
TELEPHONE="202-999-9999"
WEB="www.java2s.com" />

然后当您获取PERSON元素时,您可以使用attributes.getValue("NAME")

关于java - 使用 SAXParser 解析 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6530650/

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