Xml没有使用sax解析String作为输入 [英] Xml not parsing String as input with sax
本文介绍了Xml没有使用sax解析String作为输入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个字符串输入,我需要从中提取简单信息,这里是示例xml(来自mkyong):
I have a string input from which I need to extract simple information, here is the sample xml (from mkyong):
<?xml version="1.0"?>
<company>
<staff>
<firstname>yong</firstname>
<lastname>mook kim</lastname>
<nickname>mkyong</nickname>
<salary>100000</salary>
</staff>
<staff>
<firstname>low</firstname>
<lastname>yin fong</lastname>
<nickname>fong fong</nickname>
<salary>200000</salary>
</staff>
</company>
我如何在我的代码中解析它(我有一个字段字符串名称
在我班上):
How I parse it within my code (I have a field String name
in my class) :
public String getNameFromXml(String xml) {
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
DefaultHandler handler = new DefaultHandler() {
boolean firstName = false;
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
if (qName.equalsIgnoreCase("firstname")) {
firstName = true;
}
}
public void characters(char ch[], int start, int length) throws SAXException {
if (firstName) {
name = new String(ch, start, length);
System.out.println("First name is : " + name);
firstName = false;
}
}
};
saxParser.parse(xml.toString(), handler);
} catch (Exception e) {
e.printStackTrace();
}
return name;
}
我收到 java.io.FileNotFoundException
我发现它正在尝试查找文件 myprojectpath + wholeStringXML
I'm getting a java.io.FileNotFoundException
and I see that it's trying to find a file myprojectpath + the entireStringXML
什么我做错了吗?
Addon:
这是我的主要方法:
public static void main(String[] args) {
Text tst = new Text("<?xml version=\"1.0\"?><company> <staff> <firstname>yong</firstname> <lastname>mook kim</lastname> <nickname>mkyong</nickname> <salary>100000</salary> </staff> <staff> <firstname>low</firstname> <lastname>yin fong</lastname> <nickname>fong fong</nickname> <salary>200000</salary> </staff></company>");
NameFilter cc = new NameFilter();
String result = cc.getNameFromXml(tst);
System.out.println(result);
}
推荐答案
你应该替换 saxParser.parse(xml.toString(),handler);
包含以下内容:
You should replace the line saxParser.parse(xml.toString(), handler);
with the following one:
saxParser.parse(new InputSource(new StringReader(xml)), handler);
这篇关于Xml没有使用sax解析String作为输入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文