2011-12-21 55 views
2

我只需要解析這一個文件,所以我不想學習和解析,因爲我沒有時間。
幫我解析這個在java中。
哪個有源代碼需要獲取元素<seil:hasData>中的文本。如何解析此文件並捕獲所有'數據收集'文本?

我試過用Jena API來做,但我覺得很難理解。

<?xml version="1.0" encoding="utf-8"?> 
<rdf:RDF 
xmlns:foaf="http://xmlns.com/foaf/0.1/" 
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" 
xmlns:dc="http://purl.org/dc/elements/1.1/" 
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
xmlns:ns1="http://testing.com/seil/v1.3/app/subk#" 
xmlns:seil="http://www.testing.com/seil/1.3/seil#" 
> 
<foaf:Agent rdf:about="http://testing.com/seil/user_"> 
    <seil:hasAccessed> 
<seil:SeilApp rdf:about="http://testing.com/seil/v1.3/app/subk_app/"> 
     <rdfs:label rdf:resource="SubK (Python app)"/> 
    </seil:SeilApp> 
    </seil:hasAccessed> 
    <seil:hasActivityNode> 
    <rdf:Description rdf:about="http://testing.com/seil/node_114db2b2-beba-4816- a858-ee937d09b9a2"> 
    <seil:hasConnectedNode rdf:resource="http://testing.com/seil/node_41a897e6-2ff8-40b7-843e-f18ea4ec5100"/> 
    <dc:date rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2011-12-13T13:09:26</dc:date> 
    </rdf:Description> 
</seil:hasActivityNode> 
    </foaf:Agent> 
    <rdf:Description rdf:about="http://testing.com/seil/node_b54a07d3-af1b-49ef-9bf0-e28cf039f709"> 
    <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Recording</seil:nodeType> 
    <seil:hasConnectedNode> 
    <rdf:Description rdf:about="http://testing.com/seil/node_eb3d6c79-f833-4cbb-a107-d5464acd4c52"> 
    <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Play Audio</seil:nodeType> 
    <seil:hasConnectedNode rdf:resource="http://testing.com/seil/node_0c594e8d-9ffb-4b4b-bbca-29b6217c1308"/> 
    <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">what-is-your-phone-number</seil:hasData> 
    </rdf:Description> 
    </seil:hasConnectedNode> 
    <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">7c2373d7-64f3-475f-a3d7-6fff8da3d8e5</seil:hasData> 
</rdf:Description> 
    <rdf:Description rdf:about="http://testing.com/seil/node_02c7f438-cc29-445b-abc1-8a1cf56ad3c0"> 
    <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Play Audio</seil:nodeType> 
    <seil:hasConnectedNode> 
    <rdf:Description rdf:about="http://testing.com/seil/node_4c7fdae2-3d8d-46b8-a811-3da7cf545ed3"> 
     <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Recording</seil:nodeType> 
     <seil:hasConnectedNode rdf:resource="http://testing.com/seil/node_0965d68d-f00b-47d9-8db9-ccb92c591cac"/> 
     <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">3ffbab13-fc21-4323-a6db-623112f3a983</seil:hasData> 
    </rdf:Description> 
    </seil:hasConnectedNode> 
    <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">what-is-your-mobile-number</seil:hasData> 
    </rdf:Description> 
    <rdf:Description rdf:about="http://testing.com/seil/node_03909ff1-5f0a-4519-a0e5-32825c4d12e3"> 
    <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Data Gather</seil:nodeType> 
    <ns1:hasOptedForService rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Banking</ns1:hasOptedForService> 
    <seil:hasConnectedNode> 
     <rdf:Description rdf:about="http://testing.com/seil/node_099d578c-c8ec-4be6-9449-b0c9257bbac3"> 
    <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Play Audio</seil:nodeType> 
    <seil:hasConnectedNode rdf:resource="http://testing.com/seil/node_fbb91c3c-ae03-41f7-a9ab-2877b81bdcdc"/> 
    <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">please-select-a-bank-you-prefer</seil:hasData> 
    </rdf:Description> 
    </seil:hasConnectedNode> 
    <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">1</seil:hasData> 
    </rdf:Description> 
    <rdf:Description rdf:about="http://testing.com/seil/node_0965d68d-f00b-47d9-8db9-ccb92c591cac"> 
    <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Play Audio</seil:nodeType> 
    <seil:hasConnectedNode> 
    <rdf:Description rdf:about="http://testing.com/seil/node_0f9b1079-1994-4e29-a48e-88efbd588808"> 
    <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Recording</seil:nodeType> 
    <seil:hasConnectedNode rdf:resource="http://testing.com/seil/node_1f19b932-c1b1-42e7-bcff-0ce10937e292"/> 
    <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">589a1956-d530-4bc6-9e63-eaefc0b17d31</seil:hasData> 
    </rdf:Description> 
    </seil:hasConnectedNode> 
    <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">what-is-your-village-name</seil:hasData> 
    </rdf:Description> 
     <rdf:Description rdf:about="http://testing.com/seil/node_383c65b1-9ca7-4917-8c1f-9ef85c99ef05"> 
    <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Recording</seil:nodeType> 
     <seil:hasConnectedNode> 
     <rdf:Description rdf:about="http://testing.com/seil/node_9884cb69-a678-4306-a7ad-564feb2659d4"> 
     <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Play Audio</seil:nodeType> 
     <seil:hasConnectedNode rdf:resource="http://testing.com/seil/node_104f532a-066b-452c-9344-359e795513c7"/> 
     <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">what-is-your-father-name</seil:hasData> 
     </rdf:Description> 
    </seil:hasConnectedNode> 
     <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">b57a4a21-2a67-447f-9611-c4c25925c5b6</seil:hasData> 
    </rdf:Description> 
    <rdf:Description rdf:about="http://testing.com/seil/node_0c594e8d-9ffb-4b4b-bbca-29b6217c1308"> 
    <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Recording</seil:nodeType> 
     <seil:hasConnectedNode rdf:resource="http://testing.com/seil/node_02c7f438-cc29-445b-abc1-8a1cf56ad3c0"/> 
     <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">58f62598-2467-4f05-a5b1-e796dce4693f</seil:hasData> 
    </rdf:Description> 
    <rdf:Description rdf:about="http://testing.com/seil/node_5975e051-088c-46d 6-8281-43236ae15f4d"> 
    <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Data Gather</seil:nodeType> 
    <seil:hasConnectedNode> 
    <rdf:Description rdf:about="http://testing.com/seil/node_fe40d751-284e-45c0-a9af-c50cc85a5d8a"> 
     <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Play Audio</seil:nodeType> 
    <seil:hasConnectedNode rdf:resource="http://testing.com/seil/node_383c65b1-9ca7-4917-8c1f-9ef85c99ef05"/> 
    <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">what-is-your-name</seil:hasData> 
     </rdf:Description> 
    </seil:hasConnectedNode> 
     <dc:language rdf:datatype="http://www.w3.org/2001/XMLSchema#string">English</dc:language> 
      <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">1</seil:hasData> 
      </rdf:Description> 
      <rdf:Description rdf:about="http://testing.com/seil/node_494f41b0-d4b9-4d60-adf6-40801e689068"> 
      <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Play Audio</seil:nodeType> 
      <seil:hasConnectedNode rdf:resource="http://testing.com/seil/node_b54a07d3-af1b-49ef-9bf0-e28cf039f709"/> 
      <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">what-is-your-age</seil:hasData> 
      </rdf:Description> 
      <rdf:Description rdf:about="http://testing.com/seil/node_41a897e6-2ff8-40b7-843e-f18ea4ec5100"> 
      <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Play Audio</seil:nodeType> 
      <seil:hasConnectedNode rdf:resource="http://testing.com/seil/node_5975e051-088c-46d6-8281-43236ae15f4d"/> 
       <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">what-language-do-you-prefer</seil:hasData> 
     </rdf:Description> 
      <rdf:Description rdf:about="http://testing.com/seil/node_1f19b932-c1b1-42e7-bcff-0ce10937e292"> 
      <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Play Audio</seil:nodeType> 
     <seil:hasConnectedNode rdf:resource="http://testing.com/seil/node_03909ff1-5f0a-4519-a0e5-32825c4d12e3"/> 
      <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">kindly-select-services-you-would-prefer</seil:hasData> 
      </rdf:Description> 
      <rdf:Description rdf:about="http://testing.com/seil/node_b04f5537-e509-42e0-b0a8-b8982280494e"> 
      <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Data Gather</seil:nodeType> 
     <ns1:hasOptedForService rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Fund transfer</ns1:hasOptedForService> 
     <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">2</seil:hasData> 
    </rdf:Description> 
     <rdf:Description rdf:about="http://testing.com/seil/node_768d0f0d-d8dc-44b3-87c5-64ace8314a3e"> 
    <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Play Audio</seil:nodeType> 
     <seil:hasConnectedNode rdf:resource="http://testing.com/seil/node_b04f5537-e509-42e0-b0a8-b8982280494e"/> 
     <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">please-select-a-banking-service-you-want</seil:hasData> 
    </rdf:Description> 
    <rdf:Description rdf:about="http://testing.com/seil/node_fbb91c3c-ae03-41f7-a9ab-2877b81bdcdc"> 
     <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Data Gather</seil:nodeType> 
    <ns1:hasPreferredBank rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Yes Bank</ns1:hasPreferredBank> 
     <seil:hasConnectedNode rdf:resource="http://testing.com/seil/node_768d0f0d-d8dc-44b3-87c5-64ace8314a3e"/> 
     <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">5</seil:hasData> 
    </rdf:Description> 
    <rdf:Description rdf:about="http://testing.com/seil/node_104f532a-066b-452c-9344-359e795513c7"> 
     <seil:nodeType rdf:datatype="http://www.w3.org/2001/XMLSchema#string">Recording</seil:nodeType> 
     <seil:hasConnectedNode rdf:resource="http://testing.com/seil/node_494f41b0-d4b9-4d60-adf6-40801e689068"/> 
     <seil:hasData rdf:datatype="http://www.w3.org/2001/XMLSchema#string">e513b4c8-f98d-4349-8d03-3bd332cf0f53</seil:hasData> 
     </rdf:Description> 
    </rdf:RDF>  
+0

您是否嘗試過使用[Rome](http://java.net/projects/rome/)? – 2011-12-21 12:03:33

+0

@ user1095508這不是一個特別明確的問題,你提到你已經嘗試過使用Jena API並且表示遇到了困難,但是不會顯示你使用Jena API進行的嘗試。要使用RDF,通常需要使用像Jena或Sesame這樣的API(在Java世界中)以通用的可重用方式進行操作。你可以用XPath/XSLT編寫一些黑客行爲來解決你的問題,但只有當你獲得的RDF/XML格式符合你的期望時才能工作。 – RobV 2011-12-21 13:17:45

+1

另外,你說'我沒有時間了'這一事實意味着這是作業/課程作業。如果這個問題出現在這個類別中,可以發佈它,但是你應該在你的問題中標記它的作業和狀態。 – RobV 2011-12-21 13:19:13

回答

2

假設你的文件存儲在src/main/resources/seil.rdf在當前目錄(你可以把它放在你喜歡的地方,我使用maven模式如果可能)。首先創建一個耶拿模型:

Model m = ModelFactory.createDefaultModel(); 

然後將文件加載到模型:

FileManager.get().readModel(m, "src/main/resources/seil.rdf"); 

現在創建一個Property對象爲您hasData屬性:

String seilNS = "http://www.testing.com/seil/1.3/seil#"; 
Property hasData = m.getProperty(seilNS + "hasData"); 

最後遍歷以任何主題,任何對象和hasData作爲謂詞的陳述:

for (Iterator<Statement> i = m.listStatements(null, hasData, (RDFNode) null); i.hasNext();) { 
    Statement s = i.next(); 
    System.out.println(String.format("%s has-data %s", s.getSubject().getURI(), s.getLiteral().getLexicalForm())); 
} 

輸出:

http://testing.com/seil/node_41a897e6-2ff8-40b7-843e-f18ea4ec5100 has-data what-language-do-you-prefer 
http://testing.com/seil/node_fe40d751-284e-45c0-a9af-c50cc85a5d8a has-data what-is-your-name 
http://testing.com/seil/node_0f9b1079-1994-4e29-a48e-88efbd588808 has-data 589a1956-d530-4bc6-9e63-eaefc0b17d31 
http://testing.com/seil/node_4c7fdae2-3d8d-46b8-a811-3da7cf545ed3 has-data 3ffbab13-fc21-4323-a6db-623112f3a983 
http://testing.com/seil/node_768d0f0d-d8dc-44b3-87c5-64ace8314a3e has-data please-select-a-banking-service-you-want 
http://testing.com/seil/node_383c65b1-9ca7-4917-8c1f-9ef85c99ef05 has-data b57a4a21-2a67-447f-9611-c4c25925c5b6 
http://testing.com/seil/node_03909ff1-5f0a-4519-a0e5-32825c4d12e3 has-data 1 
http://testing.com/seil/node_0c594e8d-9ffb-4b4b-bbca-29b6217c1308 has-data 58f62598-2467-4f05-a5b1-e796dce4693f 
http://testing.com/seil/node_099d578c-c8ec-4be6-9449-b0c9257bbac3 has-data please-select-a-bank-you-prefer 
... 

有這樣做的許多其他方面。建議您閱讀Jena documentation,然後根據需要提出後續問題。我也同意RobV:如果這是你的教育課程的工作,你應該這麼說。教授們也可以閱讀StackOverflow!