2011-10-05 3 views
3
private void parseXml(String urlPath) throws Exception { 
    URL url = new URL(urlPath); 
    URLConnection connection = url.openConnection(); 
    DocumentBuilder db = DOCUMENT_BUILDER_FACTORY.newDocumentBuilder(); 

    final Document document = db.parse(connection.getInputStream()); 
    XPath xPathEvaluator = XPATH_FACTORY.newXPath(); 
    XPathExpression nameExpr = xPathEvaluator.compile("rss/channel/item/title"); 
    NodeList trackNameNodes = (NodeList) nameExpr.evaluate(document, XPathConstants.NODESET); 
    for (int i = 0; i < trackNameNodes.getLength(); i++) { 
     Node trackNameNode = trackNameNodes.item(i); 
      System.out.println(String.format("Blog Entry Title: %s" , trackNameNode.getTextContent())); 
     XPathExpression artistNameExpr = xPathEvaluator.compile("rss/channel/item/content:encoded"); 
     NodeList artistNameNodes = (NodeList) artistNameExpr.evaluate(trackNameNode, XPathConstants.NODESET); 
     for (int j=0; j < artistNameNodes.getLength(); j++) { 
      System.out.println(String.format(" - Artist Name: %s", artistNameNodes.item(j).getTextContent())); 
     } 
    } 
} 

기본 WordPress XML에서 제목과 콘텐츠를 구문 분석하는 데이 코드가 있지만 유일한 문제는 블로그 항목의 콘텐츠를 가져 오려고하면 xml 태그가 : <content:encoded>이 데이터를 검색하는 방법을 모르겠습니까?Wordpress 피드에서 Java로 XML 구문 분석

+1

주 구조를 볼 수있는 XML 또는 그것의 작은 부분 = 볼 구글 캐시를 사용합니다. 또한 jaxb 사용을 고려하십시오. – harshit

+0

http://wordpress.org/news/feed/ 구문 분석하려는 XML은이 형식과 같은 형식입니다. –

+0

@ beny23 값 데이터를 검색 할 수 있었습니까? – alex

답변

1

태그 <content:encoded>은 접두어가 content 인 XML 네임 스페이스에 encoded이라는 이름의 요소를 의미합니다. XPath 평가자는 아마도 content이라는 접두어를 네임 스페이스로 해결할 수 없습니다. 빠른 Google의 http://purl.org/rss/1.0/modules/content/이라고 생각합니다.

것은 그것을 해결하기 위해 활용하려면 다음을 수행해야합니다 :

  1. 그렇지 않으면 모든 네임 스페이스를 구문 분석하는 동안 버려진, 당신의 DocumentBuilderFactory가 건설 후에 setNamespaceAware(true)을 촉구했다 확인합니다.
  2. 접두사를 네임 스페이스 (doc)로 확인하기 위해 javax.xml.namespace.NamespaceContext 구현을 작성합니다.
  3. 구현시 XPath#setNamespaceContext()으로 전화하십시오.
+0

죄송합니다, 제 2 부분을 이해하지 못하고 있지만 도움 주셔서 감사합니다. –

0

유용하고 사용하기 쉬운 XML 파서 인 XStream을 사용해 볼 수도 있습니다. 알려진 XML 구조를 파싱하는 작업이 거의 필요 없습니다.

PS : 자신의 사이트가 현재 오프라인 상태가 P