RSS 요소에 this 버그를 피하려고합니다. 즉, 잘못된 네임 스페이스 선언을 찾아서 값을 올바른 네임 스페이스로 변경해야합니다. 예컨대 :XML 수정 네임 스페이스 선언
xmlns:media="http://search.yahoo.com/mrss"
은 다음과 같아야합니다
xmlns:media="http://search.yahoo.com/mrss/"
은 어떻게 org.w3c.Document을 부여하는 것이 achive 수 있습니까? 그래서 지금
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를 통해 노드의 네임 스페이스를 변경하는 방법을 파악해야 :
나는 특정 네임 스페이스의 모든 요소를 얻는 방법을 발견 meanwile.
답장을 보내 주셔서 감사합니다. 그러나 개체 수준에서 문서에 액세스하고 있습니다. 또한 로컬 접두사가 항상 "미디어 :"인지 여부도 확실하지 않습니다. 결국 이것은 다른 사람들이 만든 RSS 피드입니다. 하나님은 그들이 사용하는 접두어를 알고 계십니다. -/ – er4z0r
그들은 꼭 가질 필요가 없습니다! XSLT의 모든 접두사 (예 : 'x : *')를 사용할 수 있으며 중요한 것은 모두 네임 스페이스입니다. 즉, XSLT에서 사용하는 접두사는 XML 파일의 접두어와 아무 관련이 없습니다. –
@ er4z0r - XSLT (즉 미디어)에 선언 한 네임 스페이스 접두사는 소스 문서의 네임 스페이스 접두사. 둘 다 동일한 URI를 참조하는 한 템플릿이 일치합니다. –