我想使用Java XmlPullParser来解析这样的XML文件:
<start>
<tag1> text1 </tag1>
<tag2>
<tag3>text3</tag3>
<tag1>text4</tag1>
</tag2>
<tag4> text5</tag4>
</start>
我只想要<tag1> text1 </tag1>
作为结果。我当前的方法同时生成<tag1> text1 </tag1>
和<tag1>text4<tag1/>
。我还能做什么?
修改
我以String
格式获取XML。我想使用org.xmlpull.v1.XmlPullParser;
解析它。
答案 0 :(得分:9)
您也可以使用javax.xml.xpath
API:
import java.io.FileReader;
import javax.xml.xpath.*;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;
public class XPathDemo {
public static void main(String[] args) throws Exception {
XPathFactory xpf = XPathFactory.newInstance();
XPath xpath = xpf.newXPath();
InputSource xml = new InputSource(new FileReader("input.xml"));
Node result = (Node) xpath.evaluate("/tag1", xml, XPathConstants.NODE);
System.out.println(result);
}
}
答案 1 :(得分:5)
每个人都有自己的Java处理XML处理首选项,我更喜欢在Java中处理XML时使用JAXB因为我发现使用这个直接的xpath更容易。
答案 2 :(得分:1)
您可以使用Java Xpath API
执行此操作答案 3 :(得分:0)
尝试使用dom4j库
InputStream is = FileUtils.class.getResourceAsStream(filepath);
SAXReader reader = new SAXReader();
org.dom4j.Document doc = reader.read(is);
is.close();
Element content = doc.getRootElement();
List<Element> els = content.elements("elemeNtname");
在此方法之后,您将获得els列出名为“elemeNtname”的xml文件中的所有元素。