Answer to your question depends heavily on xml schema you're using. For example, if you're using attributes xml like this:
'<Item ID="1" Visibility="1" />'
You can filter items with this query:
select *
from temp
where data.exist('Item[@Visibility = "1"]') = 1
See this on sql fiddle demo
It's hard to answer more precise until we don't have exact schema of your xml.
update
So it looks like you have DevExpress settings xml stored inside your db. So if your simplified xml is like this:
<XtraSerializer version="1.0" application="View">
<property name="Columns" iskey="true" value="9">
<property name="colFirstChoiceVendorPaymentTerms" isnull="true" iskey="true">
<property name="Visible">true</property>
</property>
<property name="colSecondChoiceVendorPaymentTerms" isnull="true" iskey="true">
<property name="Visible">false</property>
</property>
</property>
</XtraSerializer>
Then you can query it like:
select
data.value('(XtraSerializer/property/property[@name="colFirstChoiceVendorPaymentTerms"]/property[@name="Visible"])[1]', 'bit') as first,
data.value('(XtraSerializer/property/property[@name="colSecondChoiceVendorPaymentTerms"]/property[@name="Visible"])[1]', 'bit') as second
from temp
sql fiddle demo
update 2
if your data type is text/varchar, try this:
select
c.data_xml.value('(XtraSerializer/property/property[@name="colFirstChoiceVendorPaymentTerms"]/property[@name="Visible"])[1]', 'bit') as first,
c.data_xml.value('(XtraSerializer/property/property[@name="colSecondChoiceVendorPaymentTerms"]/property[@name="Visible"])[1]', 'bit') as second
from temp as t
outer apply (select cast(t.data as xml) as data_xml) as c