qq_15559537 2018-11-13 02:29 采纳率: 0%
浏览 453

如何查询xml文件中介于两个数据之间的值,并返回这两个值(C#)

数据库不会用,有稍许数据就用xml了,但是这个问题难道我了,刚注册cdsn,没有币,大家帮忙啊
下面是我的xml文件内容,原理是把用户界面中的lx/ly计算后查询,得到的数字在xml里lxdivly元素值的2个之间的,则返回这2个元素,我要做插值运算。比如lx/ly=0.54,,介于第一和第二个lxdivly之间,则返回第一和第二个元素的值,下一步做插值运算获取后面的mx,my

 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<calc_ban gongkuang="三角荷载下三边固定一边自由">
    <BanData>
        <lxdivly>0.5</lxdivly>
        <Mx>0.02364</Mx>
        <My>0.0129</My>
        <Mx0>-0.04982</Mx0>
        <My0>-0.04581</My0>
    </BanData>
    <BanData>
        <lxdivly>0.55</lxdivly>
        <Mx>0.02228</Mx>
        <My>0.01273</My>
        <Mx0>-0.04737</Mx0>
        <My0>-0.0447</My0>
    </BanData>
    <BanData>
        <lxdivly>0.6</lxdivly>
        <Mx>0.02098</Mx>
        <My>0.01254</My>
        <Mx0>-0.04505</Mx0>
        <My0>-0.04358</My0>
    </BanData>
    <BanData>
        <lxdivly>0.65</lxdivly>
        <Mx>0.01975</Mx>
        <My>0.01235</My>
        <Mx0>-0.04275</Mx0>
        <My0>-0.04247</My0>
    </BanData>
    <BanData>
        <lxdivly>0.7</lxdivly>
        <Mx>0.01859</Mx>
        <My>0.01214</My>
        <Mx0>-0.0405</Mx0>
        <My0>-0.04135</My0>
    </BanData>
    <BanData>
        <lxdivly>0.75</lxdivly>
        <Mx>0.01751</Mx>
        <My>0.01191</My>
        <Mx0>-0.03833</Mx0>
        <My0>-0.04024</My0>
    </BanData>
    <BanData>
        <lxdivly>0.8</lxdivly>
        <Mx>0.0165</Mx>
        <My>0.01165</My>
        <Mx0>-0.03644</Mx0>
        <My0>-0.03914</My0>
    </BanData>
    <BanData>
        <lxdivly>0.85</lxdivly>
        <Mx>0.01557</Mx>
        <My>0.01137</My>
        <Mx0>-0.0347</Mx0>
        <My0>-0.03806</My0>
    </BanData>
    <BanData>
        <lxdivly>0.9</lxdivly>
        <Mx>0.01471</Mx>
        <My>0.01107</My>
        <Mx0>-0.03304</Mx0>
        <My0>-0.03701</My0>
    </BanData>
    <BanData>
        <lxdivly>0.95</lxdivly>
        <Mx>0.01393</Mx>
        <My>0.01076</My>
        <Mx0>-0.03145</Mx0>
        <My0>-0.03598</My0>
    </BanData>
    <BanData>
        <lxdivly>1</lxdivly>
        <Mx>0.01322</Mx>
        <My>0.01042</My>
        <Mx0>-0.02993</Mx0>
        <My0>-0.03498</My0>
    </BanData>
    <BanData>
        <lxdivly>1.1</lxdivly>
        <Mx>0.01198</Mx>
        <My>0.00972</My>
        <Mx0>-0.02717</Mx0>
        <My0>-0.03308</My0>
    </BanData>
    <BanData>
        <lxdivly>1.2</lxdivly>
        <Mx>0.01097</Mx>
        <My>0.00899</My>
        <Mx0>-0.02502</Mx0>
        <My0>-0.03133</My0>
    </BanData>
    <BanData>
        <lxdivly>1.3</lxdivly>
        <Mx>0.01015</Mx>
        <My>0.00826</My>
        <Mx0>-0.02306</Mx0>
        <My0>-0.02972</My0>
    </BanData>
    <BanData>
        <lxdivly>1.4</lxdivly>
        <Mx>0.00971</Mx>
        <My>0.00755</My>
        <Mx0>-0.02134</Mx0>
        <My0>-0.02825</My0>
    </BanData>
    <BanData>
        <lxdivly>1.5</lxdivly>
        <Mx>0.00939</Mx>
        <My>0.00686</My>
        <Mx0>-0.01997</Mx0>
        <My0>-0.0269</My0>
    </BanData>
    <BanData>
        <lxdivly>1.6</lxdivly>
        <Mx>0.00897</Mx>
        <My>0.00621</My>
        <Mx0>-0.01955</Mx0>
        <My0>-0.02566</My0>
    </BanData>
    <BanData>
        <lxdivly>1.7</lxdivly>
        <Mx>0.00849</Mx>
        <My>0.00559</My>
        <Mx0>-0.01918</Mx0>
        <My0>-0.02451</My0>
    </BanData>
    <BanData>
        <lxdivly>1.8</lxdivly>
        <Mx>0.00797</Mx>
        <My>0.00502</My>
        <Mx0>-0.0187</Mx0>
        <My0>-0.02345</My0>
    </BanData>
    <BanData>
        <lxdivly>1.9</lxdivly>
        <Mx>0.00743</Mx>
        <My>0.0045</My>
        <Mx0>-0.01813</Mx0>
        <My0>-0.02245</My0>
    </BanData>
    <BanData>
        <lxdivly>2</lxdivly>
        <Mx>0.00689</Mx>
        <My>0.00402</My>
        <Mx0>-0.0175</Mx0>
        <My0>-0.0215</My0>
    </BanData>
</calc_ban>
  • 写回答

1条回答 默认 最新

  • lshen01 2023-03-15 18:53
    关注

    参考GPT和自己的思路:

    您可以使用LINQ to XML来解决这个问题。以下是一个示例代码,可以根据提供的lxdivly值范围查询XML文件中的元素,并返回匹配的元素。

    // load the xml file into an XDocument object
    XDocument doc = XDocument.Load("file.xml");
    
    // set the lower and upper bounds
    double lowerBound = 0.5;
    double upperBound = 0.55;
    
    // query the xml file for elements with lxdivly values in the specified range
    var query = from el in doc.Descendants("BanData")
                let lxdivly = double.Parse(el.Element("lxdivly").Value)
                where lxdivly >= lowerBound && lxdivly <= upperBound
                select el;
    
    // iterate through the matching elements
    foreach (var el in query)
    {
        // do what you need to do with the matching elements (e.g. extract their values)
        double mx = double.Parse(el.Element("Mx").Value);
        double my = double.Parse(el.Element("My").Value);
    
        // do the interpolation calculation using mx and my
    }
    

    请注意,这个代码片段只是一个示例,您需要根据您的实际需求进行修改。同时,您需要确保XML文件中的数据类型正确,并且使用文本编辑器(如Notepad++)来确保该文件使用UTF-8编码并且没有BOM。

    评论

报告相同问题?

悬赏问题

  • ¥15 运筹学排序问题中的在线排序
  • ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划