我使用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很好,但我无法得到这个
任何线索?
非常感谢
答案 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')")
*为方便起见,doc
为XmlDocument
。如果您想坚持使用XElement
,则必须使用CType(xml.XPathEvaluate("processing-instruction('article')"), IEnumerable).OfType(Of XProcessingInstruction)().First()