2016-04-01 19 views
0

私はすべての<media:content/>要素のurl属性のリストを取得する必要があります。名前空間で同じタグ名のすべての要素を取得する方法は?

これは私のXMLです:

<rss version='2.0' xmlns:media='http://search.yahoo.com/mrss/'> 
    <channel> 
     <item> 
      <media:group> 
       <media:content url='https://valor'/> 
      </media:group> 
     </item> 
     <item> 
      <media:group> 
       <media:content url='https://valor'/> 
      </media:group> 
     </item>  
    </channel> 
</rss> 

私はまた

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder builder = factory.newDocumentBuilder(); 

Document doc = builder.parse(inputStream); 
NodeList contents = doc.getElementsByTagNameNS("http://search.yahoo.com/mrss/", "content"); 

これを試みたが、contents.getLength() 0を返す要素

XPathを使用しようとしましたが、 contents.getLength()は0要素を返します

XPathFactory factory2 = XPathFactory.newInstance(); 
XPath xpath = factory2.newXPath(); 
// XPathExpression expr = xpath.compile("//content"); 
XPathExpression expr = xpath.compile("//*[name()='content']"); 
NodeList contents = (NodeList) expr.evaluate(doc, XPathConstants.NODESET); 

提案?

+0

名前空間の認識が有効になっていないと、デフォルトの動作があるため、あなたのxpathが機能するはずです... –

答えて

1

まず、factory.setNamespaceAware(true)を設定する必要があります。その後、getElementsByTagNameNSが動作するはずです。

+0

ありがとうございました! BTW私はスペイン語のスタックオーバーフローに関する同じ質問をしました。私たちをサポートしたい場合は、あまりにも(英語で)答えてください、私はあなたの答えを翻訳します:http://es.stackoverflow.com/questions/6760 –

+0

私はいくつかの "Spanglish"を書いていますので、修正することができます。 –

関連する問題