如何获得<! - ?来自xml的标签与vb.net - >

时间:2014-06-23 13:44:46

标签: xml vb.net linq xelement

我使用vb.net将一些xml文件提取到数据库中,但是我无法识别xml标记中的一行

xml看起来像这样:

<article type="article">
   <id>0103-0002-004</id>
   <?article zz="3100222857"?>
</article>

我正在使用:

Dim articles As IEnumerable(Of XElement) = docIssues...<article>
For Each article As XElement In articles
   strIdXML = article.Element("id")
   strIdXML = IIf(strIdXML Is Nothing, "element does not exist", strIdXML)

   strGaleId = article.Element("ariticle")
   strGaleId = IIf(strGaleId Is Nothing, "element does not exist", strGaleId)
next

id很好,但我无法得到这个

任何线索?

非常感谢

2 个答案:

答案 0 :(得分:3)

它不是一个元素,因此通过Element()函数访问它似乎是错误的。我认为类似于:

Dim articlePI = article.DescendantNodes()
  .SingleOrDefault(
       Function(node)
         If Typeof node is XProcessingInstruction
           Dim pi = DirectCast(node,XProcessingInstruction)
           Return pi.Target = "article"
         End If
         Return False
       End Function
  )

提取项目。然后,您需要将其投放到XProcessingInstruction以访问Data

答案 1 :(得分:0)

最简单的方法是使用XPath。获取处理指令的XPath命令是processing-instruction()

因此,要获得<?article?>指令,您可以使用*

Dim result = doc.SelectSingleNode("article/processing-instruction('article')")

*为方便起见,docXmlDocument。如果您想坚持使用XElement,则必须使用CType(xml.XPathEvaluate("processing-instruction('article')"), IEnumerable).OfType(Of XProcessingInstruction)().First()