, JDOM을 사용 InputStream를 측정하고 그 문서를 만들기 :
InputStream inputStream = (InputStream)httpURLConnection.getContent();
DocumentBuilderFactory docbf = DocumentBuilderFactory.newInstance();
docbf.setNamespaceAware(true);
DocumentBuilder docbuilder = docbf.newDocumentBuilder();
Document document = docbuilder.parse(inputStream, baseUrl);
을 그 시점에서, 당신은 자바 객체에서 XML이있다. 끝난. 쉬운.
문서 객체와 Java API를 사용하여 살펴 보거나 XPath를 쉽게 사용할 수 있습니다 (일단 배웠 으면).
public static XPath buildXPath() {
XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
xpath.setNamespaceContext(new AtomNamespaceContext());
return xpath;
}
public class AtomNamespaceContext implements NamespaceContext {
public String getNamespaceURI(String prefix) {
if (prefix == null)
throw new NullPointerException("Null prefix");
else if ("a".equals(prefix))
return "http://www.w3.org/2005/Atom";
else if ("app".equals(prefix))
return "http://www.w3.org/2007/app";
else if ("os".equals(prefix))
return "http://a9.com/-/spec/opensearch/1.1/";
else if ("x".equals(prefix))
return "http://www.w3.org/1999/xhtml";
else if ("xml".equals(prefix))
return XMLConstants.XML_NS_URI;
return XMLConstants.NULL_NS_URI;
}
// This method isn't necessary for XPath processing.
public String getPrefix(String uri) {
throw new UnsupportedOperationException();
}
// This method isn't necessary for XPath processing either.
public Iterator getPrefixes(String uri) {
throw new UnsupportedOperationException();
}
}
이 가
가 그럼 그냥 사용, (고맙게도) 모두 많은 시간이 걸릴하지 않습니다 : 너무 많이 쓰기 때문에
return Integer.parseInt(xpath.evaluate("/a:feed/os:totalResults/text()", document));
방법으로 것을하고있는 것을 해결할 수있는 내장 DOM 시설이 너무 많은 코드를하는 것? 아, 맞아 - 자바 ... ;-)하지만 진지하게 : 15-20 라인이 너의 의견에 너무 많은 코드인가? 그렇다면 무엇이 받아 들여질 수 있을까요? – Thomas
중부 하 작업을위한 최상의 XML 처리 라이브러리는 vtd-xml, bar none입니다. http://sdiwc.us/digitlib/journal_paper.php?paper=00000582.pdf –