1

I have the XML

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
  xmlns:dcterms="http://purl.org/dc/terms/" 
  xmlns:oslc="http://open-services.net/ns/core#" 
  xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#">
    <oslc:ResponseInfo rdf:about="https://timo-pcvirtual:9443/qm/oslc/users">
      <rdfs:member rdf:resource="https://timo-pcvirtual:9443/jts/users/dave" /> 
      <rdfs:member rdf:resource="https://timo-pcvirtual:9443/jts/users/al" /> 
      <rdfs:member rdf:resource="https://timo-pcvirtual:9443/jts/users/ccm_user" /> 
      <rdfs:member rdf:resource="https://timo-pcvirtual:9443/jts/users/GUEST" /> 
      <rdfs:member rdf:resource="https://timo-pcvirtual:9443/jts/users/qm_user" /> 
      <rdfs:member rdf:resource="https://timo-pcvirtual:9443/jts/users/build" /> 
      <rdfs:member rdf:resource="https://timo-pcvirtual:9443/jts/users/rebecca" /> 
      <rdfs:member rdf:resource="https://timo-pcvirtual:9443/jts/users/rm_user" /> 
      <rdfs:member rdf:resource="https://timo-pcvirtual:9443/jts/users/marco" /> 
      <rdfs:member rdf:resource="https://timo-pcvirtual:9443/jts/users/sally" /> 
      <rdfs:member rdf:resource="https://timo-pcvirtual:9443/jts/users/tammy" /> 
      <rdfs:member rdf:resource="https://timo-pcvirtual:9443/jts/users/tanuj" /> 
      <dcterms:title>Users</dcterms:title> 
      <rdfs:member rdf:resource="https://timo-pcvirtual:9443/jts/users/ursula" /> 
      <rdfs:member rdf:resource="https://timo-pcvirtual:9443/jts/users/etl_user" /> 
      <rdfs:member rdf:resource="https://timo-pcvirtual:9443/jts/users/bob" /> 
      <rdfs:member rdf:resource="https://timo-pcvirtual:9443/jts/users/curtis" /> 
      <oslc:totalCount>22</oslc:totalCount> 
      <rdfs:member rdf:resource="https://timo-pcvirtual:9443/jts/users/lpa_user" /> 
      <rdfs:member rdf:resource="https://timo-pcvirtual:9443/jts/users/timo" /> 
      <rdfs:member rdf:resource="https://timo-pcvirtual:9443/jts/users/ADMIN" /> 
      <rdfs:member rdf:resource="https://timo-pcvirtual:9443/jts/users/deb" /> 
      <rdfs:member rdf:resource="https://timo-pcvirtual:9443/jts/users/jts_user" /> 
      <rdfs:member rdf:resource="https://timo-pcvirtual:9443/jts/users/unassigned" /> 
   </oslc:ResponseInfo>
</rdf:RDF>

I use C# and xpath and I want to select all rdfs:member values (users)

XPathDocument doc = new XPathDocument(response.GetResponseStream());
XPathNavigator nav = doc.CreateNavigator();
XmlNamespaceManager manager = new XmlNamespaceManager(nav.NameTable);
manager.AddNamespace("rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#");
manager.AddNamespace("rdfs", "http://www.w3.org/2000/01/rdf-schema#");
manager.AddNamespace("oslc", "http://open-services.net/ns/core#");
XPathNodeIterator iterator = nav.Select("/rdf:RDF/oslc:ResponseInfo/@rdf:resource", manager);

The iterator count is 0, because it found no matches. I don't understand why.

Manfred Radlwimmer
  • 13,257
  • 13
  • 53
  • 62
TraceKira
  • 281
  • 2
  • 13
  • 3
    If you want the attribute on the rdfs:member element, then the rdfs:member element should appear in your xpath: `/rdf:RDF/oslc:ResponseInfo/rdfs:member/@rdf:resource`. – sgbj Jun 30 '14 at 20:09
  • Also i wonder of its possible using C# regular expressions class to extract usernames for all 22 strings...? – TraceKira Jun 30 '14 at 20:10
  • @timoftebogdan before starting to use Regex read [this](http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) – L.B Jun 30 '14 at 20:16
  • If all user names are part of an Uri as in your example illustrated in your question, then you can extract the user name from the Uri simply by doing `myStringVariable.Substring(myStringVariable.LastIndexOf('/'))`. If the data should not contain an `/` character, *string.Substring()* will throw an ArgumentOutOfRangeException - so you will know when you encountered some "rdf:resource" attribute that doesn't contain an Uri... –  Jun 30 '14 at 20:50
  • @L.B thanx that was great suggestion, also sbat answer solved the question -_-'' – TraceKira Jun 30 '14 at 21:11

0 Answers0