如何拆分 XMLHttpRequest 中的值?

how to split values in XMLHttpRequest?

我有 xmlhttpRequest 用于在课程列表中搜索 我的功能之一是按程序搜索...但是有些课程有不止一个程序所以我希望能够只写一个程序的编号并找到他们有这个程序的所有课程甚至课程有其他程序

这是我的 xml 文件的一部分 当我在输入文本中写入 4108 时,我想输出包含此数字的课程

<?xml version="1.0" encoding="iso-8859-1"?>
<tousCours>
  <cours>
   <sigle>GEN0103</sigle>
   <titre>Chimie générale</titre>
   <prgs>
  <pr>0000</pr>
</prgs>
<credits>3</credits>
</cours>
<cours>
<sigle>GEN0123</sigle>
<titre>Physique mécanique et optique</titre>
<prgs>
  <pr>0000</pr>
</prgs>
<credits>3</credits>
</cours>
<cours>
<sigle>GEN1002</sigle>
<titre>Ingénierie et éthique</titre>
<prgs>
  <pr>7643</pr>
</prgs>
<prealable>GEN1000, GEN1001</prealable>
<credits>2</credits>
</cours>
<cours>
<sigle>GEN1023</sigle>
<titre>Matériaux I</titre>
<prgs>
  <pr>7643</pr>
</prgs>
<credits>3</credits>
</cours>
<cours>
<sigle>GEN1033</sigle>
<titre>Statique</titre>
<prgs>
  <pr>7643</pr>
</prgs>
<credits>3</credits>
</cours>
<cours>
<sigle>GEN1041</sigle>
<titre>Ingénierie et entreprises</titre>
<prgs>
  <pr>7643</pr>
</prgs>
<credits>3</credits>
</cours>
 <cours>
<sigle>GEN1051</sigle>
<titre>Ingénierie et entreprises II</titre>
<prgs>
  <pr>4108</pr>
  <pr>7643</pr>
  <pr>7833</pr>
</prgs>
<credits>3</credits>
</cours>

这是我的 xmlhttprequest

 xhttp = new XMLHttpRequest();
 function rechercherProg() {
        var texte2 = document.getElementById("prog").value; 
        xhttp.open("GET", "WebForm3.aspx/?prog=" + texte2 + "substring-after(',')", false);
        xhttp.send();
        Afficher(xhttp.responseXML);
    }

这是我的服务器端代码(linq to xml)

 <!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
 <body>
     <form id="form1" runat="server">
  var text = Request.Params[0];

             XDocument xdoc = XDocument.Load(Server.MapPath("~/cours.xml"));
             XDocument xresp = new XDocument(new XElement("tousCours"));

             if (text != "")
             {
                 IEnumerable<XElement> prog =
                     from b in xdoc.Elements("tousCours").Elements("cours")
                     where (string)b.Element("prgs/pr") == text 
                     select b;
                 foreach (XElement xEle in prog)
                     xresp.Element("tousCours").Add(xEle);
             }
             Response.Clear();
             Response.ContentType = "text/xml";
             Response.ContentEncoding = System.Text.Encoding.UTF8;
             xresp.Save(Response.Output);
             Response.End();

这是我的table

我有一个完整的 table 我所有的课程,我希望我搜索的结果出现在另一个 table

喜欢这个

我认为你想要

而不是 where (string)b.Element("prgs/pr") == text
 where b.Element("prgs").Elements("pr").Any(pr => (string)pr == text)

如果您不仅想要现有文档中的 select 和 return 元素,而且还想将 pr 元素减少到要查找的值,那么使用例如

         if (text != "")
         {
             xresp.Root.Add(
                 from b in doc.Elements("tousCours").Elements("cours")
                 where b.Element("prgs").Elements("pr").Any(pr => (string)pr == text)
                 select new XElement(b.Name,
                                    b.Elements().Except(b.Elements("prgs")),
                                    new XElement("prgs",
                                                new XElement("pr", text))));
         }

这仍然按照已经建议的相同方式查找元素,但构建新内容,消除任何与 text 值不同的 pr 元素,以便代替

<cours>
<sigle>GEN1051</sigle>
<titre>Ingénierie et entreprises II</titre>
<prgs>
  <pr>4108</pr>
  <pr>7643</pr>
  <pr>7833</pr>
</prgs>
<credits>3</credits>
</cours>

代码return仅

<tousCours>
  <cours>
    <sigle>GEN1051</sigle>
    <titre>Ingénierie et entreprises II</titre>
    <credits>3</credits>
    <prgs>
      <pr>4108</pr>
    </prgs>
  </cours>
</tousCours>