特别是C#读取脚本文件

时间:2014-08-06 08:36:48

标签: c# find word

所以我有一个元文件,其中包含一个部分显示在下面的长脚本。 我只在这里发帖,因为我已经注意到你们有多快回复&它已经困扰了我几个小时(字面意思) - 我是新的

示例脚本

<?xml version="1.0" encoding="UTF-8"?>

<CHandlingDataMgr>
  <HandlingData>
    <Item type="CHandlingData">
      <handlingName>Car1</handlingName>
      <fMass value="140000.000000" />
      <fInitialDragCoeff value="30.000000" />
      <fPercentSubmerged value="85.000000" />
      <vecCentreOfMassOffset x="0.000000" y="0.000000" z="0.000000" />
      <vecInertiaMultiplier x="1.000000" y="1.000000" z="1.000000" />

    </Item>
  </HandlingData>
</CHandlingDataMgr>

我想获得的输出是:

Car1, 140000.000000, 30.000000, 85.000000, "0.000000" "0.000000" "0.000000",  etc 

(没有脚本元素的所有值和名称)`

注意:对于不同的汽车,上述脚本会多次出现,所有值也不同。

我也想让我的朋友能够取代我的汽车.Meta&#39;如果使用相同的结构,文件与他们自己在同一目录中链接到我的一个。

在我的程序的更高版本中,我希望这些车辆列在列表框中,并列出所有找到的数据。 我没有在网上找到关于内嵌字/数字抓取的任何内容,我相信由于搜索的具体程度如何? 提前感谢您提供的任何帮助: - )

1 个答案:

答案 0 :(得分:1)

您需要做的是将文件解析或加载到一个合适的对象中,该对象支持查询所需的内容。 System.Xml.Linq.XDocument就是这样一个例子。

以下是一些启动你的代码:

// xml is your Xml file as a string
var doc = XDocument.Parse(xml);

// You could also load it from a file if you wanted
// var doc = XDocument.Load(fileLocation);


// You can now query the XDocument with Linq

// E.g. using fluent syntax
var items = doc.Descendants("HandlingData").Elements("Item");

// Or use the query expression syntax
var query = from i in items 
            select new { 
                HandlingName = (string)i.Element("handlingName"), 
                Mass = (decimal?)i.Element("fMass").Attribute("value") 
            };

Console.WriteLine("{0} - {1}", query.First().HandlingName, query.First().Mass);
// Prints: Car1 - 140000.000000

浏览一下MSDN文档,关于XDocument的SO有无数问题。

祝你好运:)