xml - 使用 LINQ 将 XML 文档解析为子 XML 文档
问题描述
我知道这必须在某个地方提出并回答,但我找不到它,所以我会再问一次。我有以下 vb.net 代码来提取 XML 文档。
Dim getXML = "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&retmode=xml&id=30076185,29253513"
Dim doc As XDocument
doc = XDocument.Load(getXML)
Dim xmlDocs = doc.Root.Elements("PubmedArticle")
并将 PubmedArticleSet 元素拆分为 2 个 PubmedArticle,我需要做的是将每个 xml 文档作为 xml 保存到 MS SQL 数据库中,而不是作为仅文本的剥离字符串。
我的 SQL 代码是
sql.Parameters.Add(New SqlParameter("@XMLData", SqlDbType.Xml)).Value = xmlDocs(i).Document.Root
我得到一个错误
{"Failed to convert parameter value from a XElement to a String."} System.Exception {System.InvalidCastException}
我试过
CSTR(xmlDocs(i).Document.Root)
但这给出了不同的错误
Message = "XML parsing: line 1, character 9668, illegal name character"
如果我使用相同的代码,但将 xml 剪切并粘贴到 TextBox 中,它工作正常,所以我必须假设这与我对 LINQ XML 文档缺乏了解有关。
感谢所有建议以帮助保存每个发布文档元素
更新:我可以使用带有以下代码的 XMLDocument 来做这件事。
Dim docXML As New XmlDocument
docXML.Load(getXML)
For Each node As XmlNode In docXML.SelectNodes("/PubmedArticleSet/PubmedArticle")
Dim pubmed As String = ""
Dim xmlData As String = "<PubmedArticleSet><PubmedArticle>" + node.InnerXml + "</PubmedArticle></PubmedArticleSet>"
'Data capture for Pubmed and pmc
Dim node1a As XmlNodeList = node.SelectNodes("PubmedData/ArticleIdList")
For Each node1a1 As XmlNode In node1a
pubmed = node1a1.SelectSingleNode("ArticleId[@IdType='pubmed']").InnerText
Next
UpdateDatabaseXML(xmlData, pubmed, 1835)
Next
LINQ 会做同样的事情还是我应该继续使用 XMLDocument?
解决方案
推荐阅读
- python-3.x - 在 Python 中使用 multiprocessing.Pool 和返回自定义对象的函数
- r - 在 R 中进行聚类分析的 UseMethod("group_by") 错误
- android-jetpack-compose - Compose:LazyColumn 在单个项目更新时重新组合所有项目
- asp.net - 如何在实体框架中创建表之间的关系&
- excel - Excel VBA - 从网站获取所有 href 链接
- google-cloud-cdn - 当响应为 304 Not Modified 时,Google Cloud CDN 不会覆盖缓存控制标头?
- php - CodeIgniter 4 POST 路由在 Hostinger 上的生产共享主机中不起作用
- database - 是否可以使用 ODBC 连接 Oracle Docker 容器?
- c - Leetcode 506:C 中的堆缓冲区溢出问题
- python - Tensorflow 为验证集的进动、召回和准确性提供了错误的值