VB使用XMLDocument将值从XML复制到字符串中

时间:2017-09-13 10:31:13

标签: xml vb.net ssis xmldocument

在我提出这个问题之前,请注意我对VB(.net或其他)的了解非常有限,并且到目前为止已经通过许多互联网搜索实现了我的目标。

我目前正在调用一个返回基本XML的API(成功)。我目前将这个XML响应加载到XMLDocument中,其中XML看起来如下:

<?xml version="1.0" encoding="utf-8" ?> 
<UniqueCouponResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://api.website.co.uk/">
    <LogId>ffffffff-dddd-9999-ffff-2faf432ea2bd</LogId> 
    <StatusId>0</StatusId> 
    <EntryId>99999999</EntryId> 
    <UserId>88888888</UserId> 
    <Coupon>AAAACouponCodeBBBB</Coupon> 
    <ExpiryDate>2017-09-26 23:59:59</ExpiryDate> 
</UniqueCouponResponse>

在调试Visual Studio中的代码时,上面的示例是从XML查看器中复制的。 请注意,UniqueCouponResponse没有父元素,并且每次进行API调用时都只返回其中一个元素。

我需要的是将元素中的值(例如LogID和ExpiryDate)提取到专用字符串字段中,但是我遇到了空节点的问题,For Each会立即跳出而没有分配任何字符串。

我一直使用的代码如下:

    Dim XMLDoc As New XmlDocument()
    XMLDoc.LoadXml(responseFromServer)

    Dim nodes As XmlNodeList = XMLDoc.DocumentElement.SelectNodes("/UniqueCouponResponse")
    Dim strLogID As String = "", strEntryId As String = "", strCoupon As String = "", strExpiryDate As String = ""

    For Each node As XmlNode In nodes
        strLogID = node.SelectSingleNode("LogId").InnerText
        strEntryId = node.SelectSingleNode("EntryId").InnerText
        strCoupon = node.SelectSingleNode("Coupon").InnerText
        strExpiryDate = node.SelectSingleNode("ExpiryDate").InnerText
    Next

正如我所说,我不是VB。开发人员以任何方式形式或形式,因此会对我做错了什么以及如何提取这些价值观有所帮助或反馈。

提前致谢。

编辑:我已经指出了使用命名空间的正确方向,并且有以下适用于我的VB代码。

    Dim XMLDoc As New XmlDocument()
    XMLDoc.LoadXml(responseFromServer)


    Dim xmlns As New XmlNamespaceManager(XMLDoc.NameTable)
    xmlns.AddNamespace("dc", "http://api.website.co.uk/")

    Dim nodes As XmlNodeList = XMLDoc.DocumentElement.SelectNodes("/dc:UniqueCouponResponse", xmlns)

    For Each node As XmlNode In nodes
        Dim strLogID = node.SelectSingleNode("dc:LogId", xmlns).InnerText
        Dim strEntryId = node.SelectSingleNode("EntryId", xmlns).InnerText
        Dim strCoupon = node.SelectSingleNode("Coupon", xmlns).InnerText
        Dim strExpiryDate = node.SelectSingleNode("ExpiryDate", xmlns).InnerText
    Next

0 个答案:

没有答案