2011-09-21 6 views
0

여러 xml 파일에서 xpath를 사용하여 노드 내용을 읽는 것과 관련하여 질문이 있습니다. 나는이 문제에 관해서 인터넷에 많은 자원이 있다는 것을 충분히 알고 있으며 정말로 나를 미치게한다고 생각합니다. Reuters rcv1 실험 자료의 파일에서 정보를 읽고 싶습니다. 이 코퍼스의 모든 파일은 동일한 정보를 공유합니다. 여기 예제를 게시하십시오 :여러 xml 파일에서 xpath를 사용하여 노드 내용을 읽으십시오.

<?xml version="1.0" encoding="iso-8859-1" ?> 
<newsitem itemid="1000000" id="root" date="xxx" xml:lang="en"> 
<title>title title title</title> 
<headline>headline headline headline</headline> 
<byline>Jack Daniels</byline> 
<dateline>Blabla</dateline> 
<text> 
<p> Paragraph 1 Paragraph 1 Paragraph 1 Paragraph 1 Paragraph 1 </p> 
<p> Paragraph 2 Paragraph 2 Paragraph 2 Paragraph 2 Paragraph 2 </p> 
<p> Paragraph 3 Paragraph 3 Paragraph 3 Paragraph 3 Paragraph 3 </p> 
<p> Paragraph 4 Paragraph 4 Paragraph 4 Paragraph 4 Paragraph 4 </p> 
</text> 
<copyright>(c) Reuters Limited 1996</copyright> 
<metadata> 
<codes class="bip:countries:1.0"> 
    <code code="MEX"> 
    <editdetail attribution="Reuters BIP Coding Group" action="confirmed" date="1996-02-20"/> 
    </code> 
</codes> 
<codes class="bip:topics:1.0"> 
    <code code="xxx"> 
    <editdetail attribution="Reuters BIP Coding Group" action="confirmed" date="1996-08-20"/> 
    </code> 
    <code code="xxx"> 
    <editdetail attribution="Reuters BIP Coding Group" action="confirmed" date="xxx"/> 
    </code> 
    <code code="xxx"> 
    <editdetail attribution="Reuters BIP Coding Group" action="confirmed" date="xxx"/> 
    </code> 
    <code code="xxx"> 
    <editdetail attribution="Reuters BIP Coding Group" action="confirmed" date="xxx"/> 
    </code> 
    <code code="xxx"> 
    <editdetail attribution="Reuters BIP Coding Group" action="confirmed" date="xxx"/> 
    </code> 
</codes> 
<dc element="dc.publisher" value="Reuters Holdings Plc"/> 
<dc element="dc.date.published" value="xxx"/> 
<dc element="dc.source" value="Reuters"/> 
<dc element="dc.creator.location" value="xxx"/> 
<dc element="dc.creator.location.country.name" value="xxx"/> 
<dc element="dc.source" value="Reuters"/> 
</metadata> 
</newsitem> 

내 목표는이 수천 개의 파일을 csv로 전송하는 것입니다. 필자는 xpath 주소를 통해 다른 노드 내용을 처리함으로써 소프트웨어 rapidminer로이 작업을 수행하고 있습니다. 이것은 모든 점에있어 아무런 문제가 아니라 하나입니다. // newsitem/text/p/node()는 항상 첫 단락 만 전달합니다. 내가 무엇을 찾고 있지만 모든 단락에서 모든 일반 텍스트를 추출하는 것입니다. 이 의미 CSV 파일해야 약이 다음과 같습니다 othertitleblabla, otherheadlineblabla, otherdatexxx, 다른 조 제 1 항 제 어디서나

제목, 제목, 날짜, 텍스트, 위치 titleblabla, headlineblabla, XXX 조 제 1 항 제 2 항 제 3 항, 2 단락 3, 아무데도

pleas 누군가가 이렇게 좋은 방법으로 xpath로 주소 지정을 통해이를 달성 할 수 있습니까? 나는 또한 문자열 일치로 모든 것을 시도했지만 이것은 연령이 걸리고 게다가 XML 태그를 없애야한다.

탱크 당신을 아주 많이,

알렉상드르 주어진 XPath 식에 의해 선택 (필사적 인 XPath는/XML 초보자)

답변

0

그것은 RapidMiner 노드 (-set)의 문자열 값을 검색하여 설명에서 보인다 . 정의에 따라 노드 집합의 문자열 값은이 노드 집합의 첫 번째 노드의 문자열 값입니다.이 값은 문제에 대한 설명과 정확히 일치합니다.

해결 :

대신 :

//newsitem/text/p/node() 

사용 :

/newsitem/text 

위 식 제공된 문서 elementselected 만의 문자열 값 (정의에 의해) 텍스트 노드 노드의 자손을 모두 연결 한 것입니다.

+0

답변 해 주셔서 감사합니다. 나는 그러나 이미 이것을 시도하고 이것은 또한 내가하고 싶은 것에 가장 가까운 해결책이다. 불행히도 파싱 된 텍스트에는 ',

,

등의 모든 태그가 포함되어 있습니다. 단락의 문자열을 직접 처리 할 방법이 없습니까? –

관련 문제