所以我有一个元文件,其中包含一个部分显示在下面的长脚本。 我只在这里发帖,因为我已经注意到你们有多快回复&它已经困扰了我几个小时(字面意思) - 我是新的
示例脚本
<?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;如果使用相同的结构,文件与他们自己在同一目录中链接到我的一个。
在我的程序的更高版本中,我希望这些车辆列在列表框中,并列出所有找到的数据。 我没有在网上找到关于内嵌字/数字抓取的任何内容,我相信由于搜索的具体程度如何? 提前感谢您提供的任何帮助: - )
答案 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有无数问题。