Javascript 如何在js/.net中按不同的值过滤xml记录(组合过滤器)
我有一个xml文件,其中包含大约1000条记录,我需要能够根据各种参数筛选记录,如名称、价格、颜色等,然后生成一个结果集,列出符合指定条件的所有记录。 我可以使用的技术有vb.net、javascript和output,它们将把xml结果集转换为html,以对结果进行整理,供一般用户使用,并提供分页结果以加快加载速度的功能 我看过xpath,但大多数示例都非常有限,只返回特定字段而不是完整记录,我还看过json路径,因为我可以轻松地在xml和json之间转换 Json路径与以下xml的Json版本配合使用Javascript 如何在js/.net中按不同的值过滤xml记录(组合过滤器),javascript,html,xml,vb.net,Javascript,Html,Xml,Vb.net,我有一个xml文件,其中包含大约1000条记录,我需要能够根据各种参数筛选记录,如名称、价格、颜色等,然后生成一个结果集,列出符合指定条件的所有记录。 我可以使用的技术有vb.net、javascript和output,它们将把xml结果集转换为html,以对结果进行整理,供一般用户使用,并提供分页结果以加快加载速度的功能 我看过xpath,但大多数示例都非常有限,只返回特定字段而不是完整记录,我还看过json路径,因为我可以轻松地在xml和json之间转换 Json路径与以下xml的Json版
$..Product[?(@.Gender.male == 'true' && @.Brand.isdesigner == 'true')]
这很有效,但我想知道他们的方法是否更容易做到这一点并保持灵活性
xml的示例
<?xml version="1.0"?>
<catalog>
<Product>
<ID>1000</ID>
<ThumbImg>IMG.jpg</ThumbImg>
<PTID>0</PTID>
<BID>0</BID>
<name>Item name</name>
<type>Type name</type>
<price>0.00</price>
<discountprice>0.00</discountprice>
<Brand>
<Name>Brand name</Name>
<isdesigner>true</isdesigner>
<discount>0</discount>
<discounttype>percentage</discounttype>
</Brand>
<Gender>
<male>false</male>
<female>true</female>
</Gender>
<shape>Item shape</shape>
<style>Item style</style>
<colour>
<black>false</black>
<grey>false</grey>
<white>false</white>
<brown>false</brown>
<red>false</red>
<orange>false</orange>
<yellow>false</yellow>
<green>false</green>
<blue>true</blue>
<purple>false</purple>
<pink>false</pink>
<silver>false</silver>
<gold>false</gold>
<transparent>false</transparent>
</colour>
<material>2</material>
<weight>26</weight>
<sizes>
<size>52</size>
</sizes>
</Product>
</catalog>
例如,我希望能够对部分名称匹配、价格和品牌进行筛选,但也可以对任何属性进行筛选,并返回与筛选选项匹配的记录列表
我正在使用平面文件来减少数据库的负载,并允许缓存完整的产品列表用户端,以使系统快速响应,而不需要服务器场的开销,数小时后,数据将自动失效,如果用户仍在使用该网站,它将根据需要从服务器中提取最新版本。在VB.Net中,您可以使用Linq for Xml,如以下示例所示
Dim doc = <catalog>
<Product>
<ID>1000</ID>
<name>Item name</name>
<price>0.00</price>
<discountprice>0.00</discountprice>
<Brand>
<Name>Brand name</Name>
<isdesigner>true</isdesigner>
<discount>0</discount>
<discounttype>percentage</discounttype>
</Brand>
</Product>
</catalog>
Dim query = (From p In doc...<Product>
Where p.<Brand>.<Name>.Value.Contains("name") AndAlso
Convert.ToDecimal(p.<price>.Value) < 2.0
Select p)