无法从XML查询结果中提取值



我已经看到并尝试了很多从XML中提取值的可能解决方案,其中一个似乎可以工作,但似乎无法从中获取任何数据。我能得到一些关于如何提取一些值的指导吗(MANUF_ID会很好(。下面是XML,使用VS 2019,VB.NET。我已经验证了XML是否已加载到XML文档(XmlDocument(中,查看内部/外部XML-下面显示的内部XML是通过Web服务从查询返回的。任何帮助都将不胜感激。

在生产中,我需要提取几个字段的数据值并按原样加载到数据库表中,记录的数量可能会达到几十万(最终目标(。

<?xml version="1.0"?>
-<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Header/>
-<env:Body>
-<m:cpwwsgenericexportResponse xmlns:m="http://www.deltek.com/enterprise/integration/ws/cpwwsgenericmodule">
<m:String><?xml version='1.0' encoding='UTF-8'?> 
<pdmmanuf_qry xmlns='http://www.deltek.com/enterprise/integration/pdmmanuf_qry'> 
<PDMMANUF_MANUF> 
<MANUF_ID>ACE</MANUF_ID> 
<MANUF_NAME>ACE ELECTRO-MECHANICALS</MANUF_NAME> 
</PDMMANUF_MANUF> 
<PDMMANUF_MANUF> 
<CAGE_ID_FLD>54321</CAGE_ID_FLD>
<MANUF_ID>JIMSTEST3</MANUF_ID> 
<MANUF_NAME>Jims Test Manuf 3</MANUF_NAME>
</PDMMANUF_MANUF> </pdmmanuf_qry> </m:String>
</m:cpwwsgenericexportResponse>
</env:Body>
</env:Envelope>

我尝试过SelectNodes和GetElementsByTagName,几乎使用了我能想到或在搜索中找到的所有地址组合,包括这个,并删除了带有和不带有所有斜杠的每个级别,以及相同的前缀w/a"(点(。

SelectNodes("cpwwsgenericexportResponse/pdmmanuf_qry/PDMMANUF_MANUF/MANUF_ID")

我认为问题在于Xml命名空间。尝试使用使用XNamespaceSystem.Xml.Linq

例如;你有一个像一样的名字

Public loc As XNamespace = "urn:www.pippo:v1"

为了阅读,你可以使用像这样的linq

Dim strXml = (From f In doc.Descendants(loc + "MyXmlTree") 
Select New myClsDto With {.myPropInDto = f.Element(loc + "myXmlChild").GetXmlElement}).FirstOrDefault

相关内容

  • 没有找到相关文章

最新更新