XPath 가 NameSpace 를 만 났 을 때
jdk 5.0 에는 Xpath 에 대한 지원 이 포함 되 어 있 습 니 다. 아래 코드 를 통 해 Xpath 를 얻 을 수 있 습 니 다.
XPathFactory factory=XPathFactory.newInstance();
XPath xPath=factory.newXPath();
xPath.evaluate("xpaht_exp", dom/saxSource)//
그러나 xml 파일 이 1 개 이상 의 namespace 가 있다 면 xpath 를 사용 할 때 주의해 야 합 니 다. xpath 도 namespace 를 사용 해 야 합 니 다. 아래 코드 를 통 해 xpath 의 네 임 스페이스 를 지정 할 수 있 습 니 다.
xPath.setNamespaceContext(getNameSpaceContext());
private NamespaceContext getNameSpaceContext() {
return new NamespaceContext() {
public String getNamespaceURI(String prefix) {
String uri;
if (prefix.equals("ns1")){
uri = "http://www.imsglobal.org/xsd/imscp_v1p1";
}else if (prefix.equals("ns2")){
uri = "http://www.imsglobal.org/xsd/imsmd_v1p2";
}else if(prefix.equals("xsi")){
uri = "http://www.w3.org/2001/XMLSchema-instance";
}else{
uri = null;
}
return uri;
}
public Iterator getPrefixes(String val) {return null;}
public String getPrefix(String uri) {return null;}
};
}
이렇게 하면 Xpath 표현 식 을 사용 할 때 ns1, ns2 와 같은 네 임 스페이스 를 사용 할 수 있 습 니 다. 예제 코드 는 다음 과 같 습 니 다.
assert xPath.evaluate("/ns1:manifest/@identifier", manifestSource).equals("[0000]_manifest");
assert xPath.evaluate("/ns1:manifest/ns1:resources/ns1:resource[1]/ns1:metadata/ns2:lom/ns2:general/ns2:language", manifestSource).equals("ENGLISH");
여기 상세 한 소개 가 있 습 니 다.http://blog.davber.com/2006/09/17/xpath-with-namespaces-in-java/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
VisualForce에서 rerender하면 4 바이트 문자가 깨집니다.SalesForce의 VisualForce에서 rerender하면 4바이트 문자가 깨진 단순히 버튼 누르면 다시 그릴 뿐인 화면을 작성 Test.vfp TestController.apxc 이제 rerender 버튼을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.