Java 如何在Android应用程序中解析在线xml文件中的长字符串?
我想从xml文件中解析一个很长的字符串。您可以看到xml文件。 如果您访问上述文件,则有一个Java 如何在Android应用程序中解析在线xml文件中的长字符串?,java,android,parsing,Java,Android,Parsing,我想从xml文件中解析一个很长的字符串。您可以看到xml文件。 如果您访问上述文件,则有一个“description”标记,我想从中解析字符串。当有一个短字符串时,比如说“description”标记中的3行或4行字符串,我的解析器(Java SAX解析器)可以轻松解析该字符串,但当该字符串有数百行时,我的解析器无法解析该字符串。你可以检查我的代码,我正在使用的解析,请让我知道我在这方面的错误。请在这方面帮助我,我将非常感谢你的善举 下面是解析器GetterSetter类 public clas
“description”标记
,我想从中解析字符串。当有一个短字符串时,比如说“description”标记中的3行或4行字符串
,我的解析器(Java SAX解析器)可以轻松解析该字符串,但当该字符串有数百行时,我的解析器无法解析该字符串。你可以检查我的代码,我正在使用的解析,请让我知道我在这方面的错误。请在这方面帮助我,我将非常感谢你的善举
下面是解析器GetterSetter类
public class MyGetterSetter
{
private ArrayList<String> description = new ArrayList<String>();
public ArrayList<String> getDescription()
{
return description;
}
public void setDescription(String description)
{
this.description.add(description);
}
}
使用org.w3c.dom包
public static void main(String[] args) {
try {
URL url = new URL("http://www.aboutsports.co.uk/fixtures/");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(url.openStream());
NodeList list = doc.getElementsByTagName("item"); // get <item> nodes
for (int i = 0; i < list.getLength(); i++) {
Node item = list.item(i);
NodeList descriptions = ((Element)item).getElementsByTagName("description"); // get <description> nodes within an <item>
for (int j = 0; j < descriptions.getLength(); j++) {
Node description = descriptions.item(0);
System.out.println(description.getTextContent()); // print the text content
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
publicstaticvoidmain(字符串[]args){
试一试{
URL=新URL(“http://www.aboutsports.co.uk/fixtures/");
DocumentBuilderFactory dbFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder=dbFactory.newDocumentBuilder();
documentdoc=dBuilder.parse(url.openStream());
NodeList list=doc.getElementsByTagName(“项”);//获取节点
对于(int i=0;i
在java中,从XML文档中提取位也非常有用。举个例子
您可以使用类似于/item/description
的xpath表达式。当您在XMLInputStream
上对其求值时,它将返回一个如上所述的NodeList
,其中包含
元素中的所有
元素
如果您想按自己的方式执行,那么使用DefaultHandler
,您需要设置和取消设置标志,以便检查您是否在
元素的主体中。上面的代码可能在内部执行类似的操作,对您隐藏它。代码在java中可用,为什么不使用它?您想要每个描述标记的内容吗?是的,亲爱的,我想要每个描述标记的内容。“…无法解析字符串…”这是什么意思?你有例外吗?空字符串?空字符串?我收到一个空字符串。我建议看一下。这样做会容易得多。
public static void main(String[] args) {
try {
URL url = new URL("http://www.aboutsports.co.uk/fixtures/");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(url.openStream());
NodeList list = doc.getElementsByTagName("item"); // get <item> nodes
for (int i = 0; i < list.getLength(); i++) {
Node item = list.item(i);
NodeList descriptions = ((Element)item).getElementsByTagName("description"); // get <description> nodes within an <item>
for (int j = 0; j < descriptions.getLength(); j++) {
Node description = descriptions.item(0);
System.out.println(description.getTextContent()); // print the text content
}
}
} catch (Exception e) {
e.printStackTrace();
}
}