您如何解析存储在Java字符串对象中的xml?
Java的XMLReader仅从URI或输入流中解析XML文档。无法从包含xml数据的字符串进行解析?
现在,我有以下内容:
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser sp = factory.newSAXParser();
XMLReader xr = sp.getXMLReader();
ContactListXmlHandler handler = new ContactListXmlHandler();
xr.setContentHandler(handler);
xr.p
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
在我的处理程序上,我有这个:
public class ContactListXmlHandler extends DefaultHandler implements Resources {
private List<ContactName> contactNameList = new ArrayList<ContactName>();
private ContactName contactItem;
private StringBuffer sb;
public List<ContactName> getContactNameList() {
return contactNameList;
}
@Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
super.startDocument();
sb = new StringBuffer();
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
// TODO Auto-generated method stub
super.startElement(uri, localName, qName, attributes);
if(localName.equals(XML_CONTACT_NAME)){
contactItem = new ContactName();
}
sb.setLength(0);
}
@Override
public void characters(char[] ch, int start, int length){
// TODO Auto-generated method stub
try {
super.characters(ch, start, length);
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sb.append(ch, start, length);
}
@Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
super.endDocument();
}
/**
* where the real stuff happens
*/
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
// TODO Auto-generated method stub
//super.endElement(arg0, arg1, arg2);
if(contactItem != null){
if (localName.equalsIgnoreCase("title")) {
contactItem.setUid(sb.toString());
Log.d("handler", "setTitle = " + sb.toString());
} else if (localName.equalsIgnoreCase("link")) {
contactItem.setFullName(sb.toString());
} else if (localName.equalsIgnoreCase("item")){
Log.d("handler", "adding rss item");
contactNameList.add(contactItem);
}
sb.setLength(0);
}
}
提前致谢
该SAXParser的可以读取的的InputSource。
一个 InputSource的 可以采取 读者
在其构造
因此,您可以通过StringReader来解析XML字符串
new InputSource(new StringReader("... your xml here....")));
问题内容: 我正在使用解析Java中的字符串。但是,没有直接解析字符串的函数,所以我改为这样做: 这是最好的方法吗?我觉得必须有一个更简单的方法…谢谢! 问题答案: 直接回答您的问题-据我所知,没有更好的方法。使用输入源是因为它比较通用,可以处理来自文件,字符串或跨线的输入,这是我的理解。 您还可以尝试使用SAX Xml解析器- 它稍微有点基础,并且使用了Visitor模式,但是可以完成工作,对于
问题内容: 在Java中执行以下操作的最佳方法是什么。我有两个输入字符串 我需要从字符串中提取类型和数字。 在这种情况下,答案是type =“ a good”和number =“ 234” 谢谢 问题答案: 您可以使用正则表达式:
问题内容: 我有这样的XML字符串 我遵循此帮助 用Java查询XML的最简单方法 我的代码: 我想获取味精节点值,但出现异常 我不会为这个简单的任务使用一些外部库。请指导我如何获取其他节点的值。谢谢 问题答案: 您不能将其重复用于多个调用,因为它会自动关闭。因此,您将获得IO异常。试试这个 编辑: 更好的方法是使用A解析您的XML并构建第一个(使用JAXP的DOM API),然后可以在多个XPa
我正在尝试在java中解析JSON字符串以单独打印单个值。但是在运行程序时,我得到了以下错误- 我的班级看起来像- 让我知道我遗漏了什么,或者每次运行应用程序时都会出现错误的原因。如有任何意见,将不胜感激。
我有这样一个XML字符串: 当我试图将字符串读入这样的对象时 我得到以下错误: 我在类中使用@JsonProperty是因为@XmlElement还有其他问题。如果我在ResultModel类中排除字段QueryResults,那么字符串的解析工作正常,看起来是正确的。我做错了什么?我对Java中XML字符串的解析非常陌生,所以我希望有一些简单的方法来解决这个问题。。。
问题内容: 我正在解析包含数字字符实体字符的XML,例如(但不限于)Java中的(换行符回车<>)。解析时,我将节点的文本内容附加到StringBuffer上,以便稍后将其写到文本文件中。 但是,当我将String写入文件或打印出文件时,这些unicode字符会被解析或转换为换行符/空格。 在Java中遍历XML文件的节点并将文本内容节点存储到String时,如何保留原始的数字字符实体字符符号?