我正在尝试检测/解决RSS 元素中的这个错误。这意味着我必须找到错误的命名空间声明并将其值更改为正确的命名空间。例如:
xmlns:media="http://search.yahoo.com/mrss"
一定是:
xmlns:media="http://search.yahoo.com/mrss/"
在给定 org.w3c.Document 的情况下,我该如何实现?
我的意思是发现了如何获取某个命名空间的所有元素:
XPathFactory xpf = XPathFactory.newInstance();
XPath xpath = xpf.newXPath();
XPathExpression expr = xpath.compile("//*[namespace-uri()='http://search.yahoo.com/mrss']");
Object result = expr.evaluate(d, XPathConstants.NODESET);
if (result != null) {
NodeList nodes = (NodeList) result;
for(int node=0;node<nodes.getLength();node++)
{
Node n = nodes.item(node);
this.log.warn("Found old mediaRSS namespace declaration: "+n.getTextContent());
}
}
所以现在我必须弄清楚如何通过 JAXP 更改节点的命名空间。