You're going to have to write your own logic. For instance, you can create a very simple XACML (or alfa) policy that has a target that combines both the user's role and the URL they have access to. It would look something like the following:
<Rule RuleId="c01d7519-be21-4985-88d8-10941f44590a" Effect="Permit">
<Description>Allow access to a given URL for a given role</Description>
<Target>
<AnyOf>
<AllOf>
<Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">your role value</AttributeValue>
<AttributeDesignator
Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"
AttributeId="role"
MustBePresent="false"
DataType="http://www.w3.org/2001/XMLSchema#string"/>
</Match>
</AllOf>
</AnyOf>
<AnyOf>
<AllOf>
<Match MatchId="urn:oasis:names:tc:xacml:1.0:function:anyURI-equal">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">17:00:00</AttributeValue>
<AttributeDesignator
Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource"
AttributeId="targetURL"
MustBePresent="false"
DataType="http://www.w3.org/2001/XMLSchema#anyURI"/>
</Match>
</AllOf>
</AnyOf>
</Target>
You can use XML manipulation libraries if you want to go 'raw'. You can even take XACML 3.0's schema to generate POJOs to create XML. Alternatively you could use AuthzForce's Java implementation of XACML.
If you go down the path of ALFA (easier to read), you can definitely create your own script (in whatever text manipulation language you prefer e.g. sed or Python...) to go from your CSV to ALFA.