Javascript 如何在js/.net中按不同的值过滤xml记录(组合过滤器)

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版

我有一个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)