我需要获取与此类似的 XMLurl
的所有元素的属性。<media:content/>
<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>
这是我尝试过的一种方法,但它contents.getLength()
返回零。
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(inputStream);
NodeList contents = doc.getElementsByTagNameNS("http://search.yahoo.com/mrss/", "content");
我尝试过使用 XPath... 再次contents.getLength()
返回零。
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);
我从来没有得到所需的节点,有什么建议吗?
要使用方法
..NS
,当您创建 DOM 时,您必须调用方法factory.setNamespaceAware(true);
要获取属性的值(在本例中为 url),具有以下
.rss
形式之一:可以通过获取节点列表并访问它们的值来访问元素:
或者您可以直接进入元素,在本例中为 "
media:content
" 并获取其 " " 属性的值url
:将获得价值:
XML:
0OK30-1-0000013-66271741VisaGoldBs50007000-200011/01/201511/01/2020ASCACamacho30-1-0000013-6111122222VisaGold$us40002000200011/03/2014jar19/01/20ASCAEl
JAVA:您阅读 XML: DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = null; 字符串消息错误=空;整数 RespCod = -1; 字符串 msgResp = ""; 尝试 { db = dbf.newDocumentBuilder(); InputSource is = new InputSource(); is.setCharacterStream(new StringReader(xmlresponse)); 尝试 { 文档文档 = db.parse(is); NodeList responseCode = document .getElementsByTagName("ResponseCode"); NodeList responseMessage = document .getElementsByTagName("ResponseMessage");
你得到数据:try { db = dbf.newDocumentBuilder(); InputSource is = new InputSource(); is.setCharacterStream(new StringReader(xmlresponse)); 尝试 { 文档文档 = db.parse(is);
//ALL 在这里迭代你想输出的地方 } } catch (SAXException e) { e.printStackTrace(); if (logger.isDebugEnabled()) logger.logDebug(messageError); 返回空值;} catch (IOException e) { e.printStackTrace(); if (logger.isDebugEnabled()) logger.logDebug(messageError); 返回空值;} } 捕捉(ParserConfigurationException e1){ e1.printStackTrace(); if (logger.isDebugEnabled()) logger.logDebug(messageError); 返回空值;}
希望对你有帮助...