2011-09-30 5 views
1

xpath를 사용하여 NodeList를 가져옵니다. 그런 다음이 코드를 사용하여 문자열 표현을 가져 오지만 부모 노드도 있습니다.부모 정보가없는 문자열에 노드

StringWriter sw = new StringWriter(); 
    try { 
    Transformer t = TransformerFactory.newInstance().newTransformer(); 
    t.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); 
    t.transform(new DOMSource(node), new StreamResult(sw)); 
    } catch (TransformerException e) { 
     e.printStackTrace(); 
    } 
    return sw.toString(); 

어떻게 자체 또는 데먼드를 문자열로만 가져올 수 있습니까? 부모로부터 네임 스페이스 선언을 훔칠 수 있습니까?

답변

1

노드 집합의 노드를 선택하지 않았습니까? 대부분 요소 일 뿐이며 문제의 원인입니다.

해결책은 간단입니다 :

구축 및 만 원 텍스트 노드를 선택하는 XPath 식을 사용합니다. 예를 들어

대신 : 마지막 표현식의 자식 z라는 어떠한 요소의 자식 텍스트 노드를 선택

/x/y/z/text() 

/x/y/z 

사용 x이라는 최상위 요소의 하위 요소 인 y이라는 요소.

UPDATE :

영업 이익은 코멘트에 명확히했다 가 :.

"감사합니다, 나는이 시도하지만, 그것은 단지 노드에서 내 실제 텍스트를 제공

내가 의 캐릭터 reresentation합니다 부모 노드의 정보없이 현재 노드에있는 모든 노드 (텍스트) 예 : xml 파일이 있고 텍스트 편집기로 열어 본 다음 하위 트리를 복사합니다. 얘기하고있어? " 당신의 XML API는 모든 선택된 노드 사용하기 위해 허용하는 경우

<xsl:copy-of select="yourExpression/node()"/> 

는 다른 방법으로, 사용

이 XSLT에서 수행 할 수 있습니다 :

theSelectedNode.InnerXml 
+0

감사합니다, 나는이 시도, 하지만 그것은 노드에 실제 텍스트 만 제공합니다. 부모 노드의 정보없이 현재 노드의 모든 항목 (노드 및 텍스트)의 문자열 표현을 원합니다. 예를 들어 xml 파일을 가지고 텍스트 편집기로 열고 하위 트리를 복사하면됩니다. 내가 무슨 말하는지 알아? –

+0

@FranzKafka : 네, 이제 당신이 원하는 것을 알고 있습니다. 내 질문에 대한 업데이트를 참조하십시오. –

관련 문제