我有一个类似下面的xml
<Unit Name="ANES">
<med>20% FAT EMULSION 250 ML BAG</med>
<med>ACETAMINOPHEN INJ 1000 MG/ 100 ML VIAL</med>
<med>ALBUMIN HUMAN, 5% 12.5 G/250 250 ML VIAL</med>
<med>ALBUTEROL SULFATE (90 MCG/INH) 60 PUFF INHALER</med>
<med>AMINOPHYLLINE INJ 250 MG/10 10 ML AMP</med>
<med>ANESTHESIA KIT 1 EA MISC</med>
<med>ATROPINE SULFATE INJ [ATRSG] 1MG/10ML 1 MG SYRG</med>
<med>ATROPINE SULFATE INJ 0.4 MG/1 M 1 ML VIAL</med>
<med>BENZOCAINE 60 ML SPRAY</med>
<med>BUPIVACAINE 0.25% INJ 30 ML VIAL</med>
<med>BUPIVACAINE IN DEXTROSE INJ 2 ML AMP</med>
</Unit>
<Unit Name="ICU">
<med>0.9% NA CL IV [NS1000] 1000 ML BAG</med>
<med>0.9% NACL 50 ML VIAL</med>
<med>20% FAT EMULSION 250 ML BAG</med>
<med>ACETAMINOPHEN 325 MG TAB</med>
<med>ACETAMINOPHEN SOLUTION 650MG/20.3ML 650 MG CUP</med>
<med>ACETAMINOPHEN SUPPOSITORY 650 MG SUPP</med>
<med>ACETAMINOPHEN/CODEINE 300 MG/30 MG 1 TAB </med>
<med>ALBUTEROL SULFATE INH SOLN (2.5 MG/3 ML) 2.5 MG AMPUL-NEB</med>
<med>ATROPINE SULFATE INJ [ATRSG] 1MG/10ML 1 MG SYRG</med>
<med>AVITENE 5 G CAN</med>
<med>BICITRA ORAL SOLN 30 ML CUP</med>
<med>BISACODYL SUPPOSITORY 10 MG SUPP</med>
<med>BUTORPHANOL TARTRATE 1 MG/ML 1 ML VIAL</med>
<med>BUTORPHANOL TARTRATE 2 MG/ML 1 ML VIAL</med>
<med>CALCIUM GLUCONATE INJ[CG] 1 GM/10ML 10 ML 10MLVIAL</med>
<med>CARBOPROST TRO (HEMABATE) 250 MCG/ML 1 ML AMP</med>
<med>CEFAZOLIN SODIUM INJ (CEF1] 1 G VIAL</med>
<med>CLINDAMYCIN PHOSPHATE/D5W 900MG/50ML PIGGYBACK</med>
<med>CODEINE SULFATE 15 MG TAB</med>
<med>DEXAMETHASONE PHOSPHATE [DECSG] 4 MG/ML 1 ML VIAL</med>
<med>DIAZEPAM INJ 10 MG/2 ML 10 MG SYRIN</med>
<med>DIPHENHYDRAMINE 50 MG/ML 50 MG VIAL</med>
<med>DOCUSATE SODIUM 100 MG CAP</med>
<med>EPHEDRINE SULFATE INJ 50 MG AMP</med>
<med>EPINEPHRINE 1:1000 INJ *PF* 1 MG/ 1 ML AMPULE</med>
</Unit>
<Unit Name="NICU">
<med>0.9% NA CL IV [NS1000] 1000 ML BAG</med>
<med>0.9% NACL 50 ML VIAL</med>
<med>20% FAT EMULSION 250 ML BAG</med>
</Unit>我正在尝试做的是读取XML中的值,并将这些单元与药物合并在一起。例如,ANES (20%脂肪乳剂250毫升袋子)也位于ICU和NICU。当用户输入med时,它将能够告诉他们药物的位置。我有一个可以工作的实现,但缺点是它真的很慢。所以我的问题是,我可以做什么类型的算法或排序来提高性能。我试过使用linq (最终我得到了一个内存不足的异常),使用字典被认为太慢了。我对任何想法或建议都持开放态度。THe list大约有50个站点,每个单元有80-100个Meds。
编辑:这是一个WPF应用程序(C#)。xml不是我所能掌握的,因为它是API提供的,所以我不能更改它。
发布于 2012-07-14 14:38:41
将XML加载到XDocument中,并使用LINQ to XML查询数据:
var doc = XDocument.Parse("your XML here");
var units = from u in doc.Elements("Unit")
where u.Elements("med").Any(m => (string)m == "med you're looking for")
select (string)u.Attribute("Name");https://stackoverflow.com/questions/11481458
复制相似问题