【问题标题】:VB.Net XML Parsing IssueVB.Net XML 解析问题
【发布时间】:2015-02-15 10:56:48
【问题描述】:

我在将一些 XML 信息解析到富文本框中时遇到了一些困难。我正在从流中提取 XML 文件,并且数据成功通过,但是当我尝试查看元素时,我认为有问题。

这是流加载后的sn-p(通常每个表单名称旁边都有值)

"

1234

约翰·史密斯

XXXXX-XXXXX-XXXXX-XXXXX-XXXXX

1

常规

$
"

我的最终目标是能够获取 SupportRepKey 和 SupportRepName。

我认为问题在于 下的每个名称都没有被归类为元素。当我运行这样的代码来尝试获取“SupportRepKey”的值时,消息框将显示一个空值(空白)。

Dim reader As XDocument = XDocument.Load(dataStream)



    For Each detail As XElement In reader...<details>
        Dim APIKey As String = detail.Element("SupportRepKey")
        MessageBox.Show(APIKey) 'returns null value
    Next

如果我用这个运行它(用于故障排除以确保从数据流中提取 XML 文件):

 Dim reader As XDocument = XDocument.Load(dataStream)

    For Each detail As XElement In reader...<details>
        MessageBox.Show(detail.Value) 'returns all values in one long string
    Next

它在一个长字符串中返回每个

旁边的所有值:“1234JohnSmithXXXXX-XXXXX-XXXXX-XXXXX-XXXXX1General$”

我正在使用 API 与我工作的系统进行交互。每当有人输入他们的登录信息并且每个代表都有一个单独的密钥时,都会生成 RepName 和 RepKey。我需要能够抓取这两个东西并将它们设置为变量或文本字段中的文本,以便我可以进一步与每个用户的 API 交互。

我认为这与 下的对象是 form name="" 有关,但过去两天我到处寻找,但没有任何帮助。也许我没有在寻找合适的术语,但我喜欢这个网站。每个人总是那么乐于助人,所以我想我会试试我的运气。谢谢!

【问题讨论】:

    标签: xml vb.net parsing httpresponse


    【解决方案1】:

    您想要的 Element 是“form”,它有一个 Attribute “name”,其值为“SupportRepKey”。

    你正在做的是:找到元素“SupportRepKey”。

    detail.Element("SupportRepKey")
    

    但这并不存在,因为元素名称是“form”。 “SupportRepKey”只是一个名为“name”的属性的值。

    使用 XPath 怎么样?

    C#:

    string repKey = reader.XPathSelectElement("//form[@name='SupportRepKey']").Value;
    

    【讨论】:

    • 非常感谢 ec8or!在对 vb 进行了一些调整之后,这非常有效,但仍然完美无瑕!
    【解决方案2】:

    属性是您所追求的,不完全确定您的代码会发生什么变化,但查看属性的变化可以让您提取这些数据。

    detail.Element("form").Attribute("name")

    【讨论】:

    • 我也尝试调整此方法的代码,但下面 ec8or 的答案正是我所需要的。我必须在 API 的其他区域调用更多数据,这样我才能得到我需要的东西。再次感谢!
    • 听起来不错! (值得注意的是缓存(在您的情况下是表单对象)可能是有益的,因为使用 // 在搜索整个 XML 树时可能会很慢)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    相关资源
    最近更新 更多