【问题标题】:Filter on an Attribute (XPath-LINQ to XML) by using parameter使用参数过滤属性(XPath-LINQ to XML)
【发布时间】:2016-07-16 02:59:01
【问题描述】:
  1. 此代码无效

    public HttpResponseMessage Get(string par)
    {
        String JsonData, JsonFromXML;
        XElement root = XElement.Load("http://www.mywebsite.com/mapdata_xml.xml");
        IEnumerable<XElement> address =
            from el in root.Elements("marker")
            where (string) el.Attribute("province") == par
            orderby (string)el.Attribute("name")
            select el;
    
    
        var XMLData = "";
        foreach (XElement el in address)
            XMLData = XMLData + el;
        //XMLData = "<markers>" + XMLData + "</markers>";
    
    
        XmlDocument xd = new XmlDocument();
        xd.LoadXml("<markers>" + XMLData + "</markers>");
    
        JsonFromXML = JsonConvert.SerializeXmlNode(xd);
    
        JsonFromXML = JsonFromXML.Remove(0, 11);
        JsonFromXML = JsonFromXML.Substring(0, JsonFromXML.Length - 1);
        JsonData = JsonFromXML.Replace("\"@", "\"");
    
        return new HttpResponseMessage()
        {
            Content = new StringContent(JsonData)
        };
    }
    

网络接口:http://localhost:55607/api/Test?par=%22Pursat%22

参数:par

问题:我有一个 Web API (http://localhost:55607/api/Test?par=%22Pursat%22)。我想将参数“Pursat”传递给 ASP.Net(公共 HttpResponseMessage Get(字符串 par)名称“Par”)。然后我什么也得不到。但是,当我这样使用时(where (string) el.Attribute("province") == "Pursat"),我可以从我的代码中获取数据。

  1. 这段代码运行良好

    public HttpResponseMessage Get(string par)
    {
        String JsonData, JsonFromXML;
        XElement root = XElement.Load("http://www.mywebsite.com/mapdata_xml.xml");
        IEnumerable<XElement> address =
            from el in root.Elements("marker")
            where (string) el.Attribute("province") == "Pursat"
            orderby (string)el.Attribute("name")
            select el;
    
    
        var XMLData = "";
        foreach (XElement el in address)
            XMLData = XMLData + el;
        //XMLData = "<markers>" + XMLData + "</markers>";
    
    
        XmlDocument xd = new XmlDocument();
        xd.LoadXml("<markers>" + XMLData + "</markers>");
    
        JsonFromXML = JsonConvert.SerializeXmlNode(xd);
    
        JsonFromXML = JsonFromXML.Remove(0, 11);
        JsonFromXML = JsonFromXML.Substring(0, JsonFromXML.Length - 1);
        JsonData = JsonFromXML.Replace("\"@", "\"");
    
        return new HttpResponseMessage()
        {
            Content = new StringContent(JsonData)
        };
    }
    

我想通过使用参数“par”而不是固定数据“Pursat”来查询数据。

你知道如何解决这个问题吗?

【问题讨论】:

    标签: c# asp.net-mvc parameters linq-to-xml


    【解决方案1】:

    看起来您使用双引号(HTML 编码中的 %22 = " )传递值。所以实际上,您的查询中的 where 看起来像这样:

    where (string) el.Attribute("province") == ""Pursat""
    

    如果你这样称呼它:

    http://localhost:55607/api/Test?par=Pursat
    

    你的 where 子句应该是这样的:

    where (string) el.Attribute("province") == "Pursat"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多