在vb.net应用程序中优化xml处理

时间:2014-06-27 13:59:18

标签: xml vb.net .net-4.0 linq-to-xml

我有这个片段,我需要优化它以便更快:

Dim lst = (From t In DocElet.ChildNodes Select ID = t.item("ID").outerxml).Distinct().ToList()
       Parallel.For(0, lst.Count, Sub(i)
         Dim P As XmlElement = GetElement(lst(i))
       Dim ls = (From t In DocElet.ChildNodes Where t.item("ID").innerText = P.InnerText Select t)
         Parallel.ForEach(ls, Sub(D)
         Dim verif_date As String = D.Item("DAD").InnerText
        Sej.ID = D.Item("ID").InnerText
         End Sub)
            End Sub)

这是Xml结构:

<?xml version="1.0" encoding="utf-8"?>
<PatientData>
<Sejour><ID></ID><DAD></DAD></Sejour>
  </PatientData>

我问我如何修复我的代码,因为在列表包含20000个元素的情况下需要花费很多时间(50秒)?

1 个答案:

答案 0 :(得分:1)

OuterXml / InnerText方法可能很慢,因为它们需要遍历XML树并从所有元素构建新的XML /文本。

看起来您正在寻找某些<ID>个节点的匹配值。如果此类节点仅包含单个值而不包含子树,请使用XmlElement.Value

附注:使用Parallel.For / Parallel.ForEach从多个线程访问XML并不能保证正常工作,因为这些类不是线程安全的。