delphi读取xml元素

2024-04-15

我是 XML 新手,我们需要使用新的进行地理编码必应空间数据 API http://msdn.microsoft.com/en-us/library/gg585131.aspx。我已经设法以 xml 格式从他们那里得到结果。我将如何阅读响应中的特定元素,即。链接、状态和错误消息?

<?xml version="1.0" encoding="utf-8"?>
<Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/search/local/ws/rest/v1">
    <Copyright>Copyright © 2011 Microsoft and its suppliers. All rights reserved. This API cannot be accessed and the content and any results may not be used, reproduced or transmitted in any manner without express written permission from Microsoft Corporation.</Copyright>
    <BrandLogoUri>http://spatial.virtualearth.net/Branding/logo_powered_by.png</BrandLogoUri>
    <StatusCode>201</StatusCode>
    <StatusDescription>Created</StatusDescription>
    <AuthenticationResultCode>ValidCredentials</AuthenticationResultCode>
    <TraceId>ID|02.00.82.2300|</TraceId>
    <ResourceSets>
        <ResourceSet>
            <EstimatedTotal>1</EstimatedTotal>
            <Resources>
                <DataflowJob>
                    <Id>ID</Id>
                    <Link role="self">https://spatial.virtualearth.net/REST/v1/dataflows/Geocode/ID</Link>
                    <Status>Pending</Status>
                    <CreatedDate>2011-03-30T08:03:09.3551157-07:00</CreatedDate>
                    <CompletedDate xsi:nil="true" />
                    <TotalEntityCount>0</TotalEntityCount>
                    <ProcessedEntityCount>0</ProcessedEntityCount>
                    <FailedEntityCount>0</FailedEntityCount>
                </DataflowJob>
            </Resources>
        </ResourceSet>
    </ResourceSets>
</Response>

我正在使用德尔福XE。

问候, 彼得


使用一些简单的 XPATH 来获取请求的值怎么样?

//Link[1]/node()- 从整个文档中选择第一个“链接”节点,然后选择任何类型的第一个子节点。只是碰巧第一个子节点是包含实际的未命名节点https link.

假设 XML 文档被加载到Doc: TXMLDocument,您可以使用以下代码提取链接:

(Doc.DOMDocument as IDomNodeSelect).selectNode('//Link[1]/node()').nodeValue

您可以找到一些有关 XPath 的文档阅读 MSDN 上的 XPath 示例 http://msdn.microsoft.com/en-us/library/ms256086.aspx。您可能会找到更好的文档在w3学校 http://www.w3schools.com/XPath/xpath_syntax.asp。最重要的是,这是一个简单(但完整)的控制台应用程序,它使用 XPath 提取并显示 3 个请求的值:

program Project14;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  Xmldoc,
  xmldom,
  ActiveX;

var X: TXMLDocument;
    Node: IDOMNode;
    Sel: IDomNodeSelect;

begin
  try
    CoInitialize(nil);

    X := TXMLDocument.Create(nil);
    try

      // Load XML from a string constant so I can include the exact XML sample from this
      // question into the code. Note the "SomeNode" node, it's required to make that XML
      // valid.

      X.LoadFromXML(
        '<SomeNode>'+
        '  <Link role="self">' +
        '    https://spatial.virtualearth.net/REST/v1/dataflows/Geocode/jobid' +
        '  </Link>' +
        '  <Status>Aborted</Status>' +
        '  <ErrorMessage>The data uploaded in this request was not valid.</ErrorMessage>' +
        '</SomeNode>'
      );

      // Shortcut: Keep a reference to the IDomNodeSelect interface

      Sel := X.DOMDocument as IDomNodeSelect;

      // Extract and WriteLn() the values. Painfully simple!

      WriteLn(Sel.selectNode('//Link[1]/node()').nodeValue);
      WriteLn(Sel.selectNode('//Status[1]/node()').nodeValue);
      WriteLn(Sel.selectNode('//ErrorMessage[1]/node()').nodeValue);

      ReadLn;
    finally X.Free;
    end;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

delphi读取xml元素 的相关文章

  • 从 Delphi VCL 样式获取特定字形

    我想从 VCL 样式获取特定的位图 并将其设置为按钮上的图像 它实际上是帮助问号 在位图样式编辑器中是来自表单的 btnHelp 图像 要从 VCL 样式获取视觉元素 字形 您必须使用GetElementDetails和TCustomSty
  • Android:默认 XML 编辑器不再打开 [不支持的内容类型错误]

    我使用 Eclipse 在 Android 中开发应用程序已经有一段时间了 我最近将Android SDK平台更新到3 0 API 11 现在 我无法通过双击打开 AndroidManifest xml 或 Layout 文件夹中的任何其他
  • 如何比较枚举类型集

    从某个时刻开始 我厌倦了编写设定条件 and or 因为对于更多的条件或更长的变量名 重新编写会变得笨拙且烦人 所以我开始写助手这样我就可以写ASet ContainsOne ceValue1 ceValue2 代替 ceValue1 in
  • logback的“谨慎模式”是如何实现的?

    The 审慎模式 http logback qos ch manual appenders html prudentlogback 中的序列化所有 JVM 之间的 IO 操作 写入同一文件 可能运行在不同的主机上 在其他日志记录框架中 如果
  • 如何从该 JAVA 文件中提取 Delphi 类以与 Android 一起使用?

    我的Delphi XE7项目需要与FTDI FT311 Android 配件芯片 http www ftdichip com Products ICs FT311D html 他们帮助提供了一个 Android 演示 其中包括他们的 JAV
  • 阻止 IDE 自动添加使用单位

    我正在将 Lazarus 项目转移到德尔福西雅图 Lazarus 项目依赖于 40 多个单元 包括控件 并具有多种应用程序 在所有项目的使用条款中 他们使用了以下内容 uses Classes SysUtils Forms Controls
  • 如何使用C#在asp.net中下载xml文件

    我正在使用网络应用程序ASP NET 与 MVC3 我是 mvc3 的新手 我的网页上有一个下载按钮 当我要单击下载按钮时 我希望能够打开该 XML 文件 我尝试过一些代码更改动作结果但我没有打开文件 通过使用下面提到的代码 我收到一个下载
  • CharInSet 不适用于非英文字母?

    我已经将应用程序从 Delphi 2007 更新到 Delphi 2010 一切都很顺利 除了一条编译正常但不起作用的语句 If Edit1 Text 1 in S then ShowMessage Found else ShowMessa
  • 如何使用XPath选择非空段落?

    我想要抓取的网页具有类似的结构 每个都有一个段落是一个问题 一个段落是一个答案 我想抓取每个问题和答案并将它们存储在两个项目中 问题是 在某些页面上 问题和答案分别是 xxx p 1 and xxx p 2 但在其他页面上 xxx p 1
  • 生成 XML 时如何保留 CDATA 中的换行符?

    我想写一些包含空格字符的文本 例如newline and tab到一个xml文件中 所以我使用 Element element xmldoc createElement TestElement element appendChild xml
  • 菜单未显示在应用程序中

    由于某种原因 我的操作菜单在我的 Android Studio 应用程序中消失了 我正在按照教程学习如何创建 Android 应用程序 但最终遇到了这个问题 我正在使用 atm 的教程 http www raywenderlich com
  • Text::平衡和多行 xml

    看来我有点失落了 我需要解析一个大的 大约 100 mb 且相当难看的 xml 文件 如果我使用parsefile 它返回错误 文档元素后的垃圾 但它会很乐意解析文件的较小元素 所以我决定将文件分解为元素并解析它们 由于不鼓励使用正则表达式
  • 从其可执行文件的路径获取服务名称

    我有一个可执行文件的路径 它是一个正在运行的服务应用程序 例如 C Program Files x86 Someapp somesvc exe 我想停止并启动它 为此我想我需要获取服务的名称 如下所示 this https stackove
  • 如何在表单上绘制半透明图像?

    我想在 Delphi 窗体上绘制半透明图像 但由于某种原因它不起作用 Here is the original PNG border is semi transparent 我将图像加载到TImage object Image1 Trans
  • 基于xsd模式生成xml(使用.NET)

    我想根据我的 xsd 架构 cap xsd 生成 xml 文件 我找到了这篇文章并按照说明进行操作 使用 XSD 文件生成 XML 文件 https stackoverflow com questions 6530424 generatin
  • 任何第三方都可以从我的项目加载嵌入式资源吗?

    请参考我的一篇之前的问题 https stackoverflow com questions 14681364 issues passing data from dll to application 我问的是如何从 DLL 加载已编译的资源
  • 增强 XML 解析复杂性 - c# XML 循环

    我正在编写自己的 C 自定义地图导航程序 我在用打开街道地图用于地图数据 它是一个包含节点和方法的大型 XML 文件 我编写了一个转换器 可以从 XML 文件中去除无用的垃圾 如时间戳 用户等 这样文件就会变得更小 现在 当我尝试循环 XM
  • Android Manifest 自动生成无效权限

    我不小心在 Android 清单中输入了无效的权限名称 并且无法将其删除 这是我的清单代码
  • Delphi:现场记录应用程序错误

    使用 Delphi 7 我想知道是否有一个免费组件可以在我的应用程序在远程站点运行时收集诊断信息并帮助我调试错误报告 也许它会记录每个选择的菜单项 单击的控件 文本输入等 也许它只是在崩溃时转储堆栈 也许它还有其他作用 我不介意添加代码 例
  • Jython 和 SAX 解析器:允许的实体不超过 64000 个?

    我做了一个简单的测试xml saxJython 中的解析器在处理大型 XML 文件 800 MB 时遇到以下错误 Traceback most recent call last File src project xmltools py li

随机推荐

  • python 请求特定 SNI 证书的“证书验证失败”

    多年来我一直在几乎所有项目中使用 python requests 框架 但还没有遇到过这样的问题 这只发生在网站上www pagedna com据我所知 要重现的代码示例非常简单 import requests requests get h
  • 如何将行添加到数据框中仅修改某些列

    为了准备用于绘图的数据 我需要向数据添加一个新行 我有这个数据框 df lt data frame test id c 1 1 1 1 test nr c 1 1 1 1 region c A B C D test value c 3 1
  • 使用两个数据库的单个 Django 应用程序

    如何在 Django 中配置托管在两个不同数据库中的模型 到目前为止 我已经在出色的 Django 环境中设置了 3 个数据库 我的一个应用程序使用Router https docs djangoproject com en dev top
  • Cordova 签名的 apk 在闪屏后产生空白屏幕

    Cordova 调试构建工作正常 但是签名 apk 在闪屏后会出现白屏 已经尝试创建新应用程序并使用发布密钥进行签名 但签名的 apk 也有同样的问题 cordova version 7 1 0 cordova platform andro
  • 我想要动态加载到入口点的 Webpack 捆绑模块

    下面的代码似乎使用动态导入 https webpack js org guides code splitting dynamic imports function executeApplication void const loadData
  • 在 NSView 中重复背景图像

    我正在尝试在 NSView 中绘制重复的背景图像 到目前为止我已经有了 INIT id initWithFrame NSRect frame if self super initWithFrame frame self background
  • 如何使用 JavaScript 打印数组中的元素

    我有一个包含元素的数组 例如 array example1 example2 example3 如何按以下格式打印 示例 1 2 示例 2 3 示例 3 Use forEach为此 如下所示 var a a b c a forEach fu
  • NSDate 和 NSDateFormatter 问题

    我有点难以理解为什么以下代码会导致我的应用程序崩溃 NSDateFormatter dateFormatter NSDateFormatter alloc init dateFormatter setDateFormat MMMM d yy
  • 使用毕加索下载图像会在缓存中创建不正确的图像,可能修复吗?

    我有一个带有图像的领域数据库URLs 我需要将这些图像下载到ExternalCacheDir 现在这里有problem 假设我有三张图片 ar11 jpg ar12 jpg ar13 jpg 执行我的代码后 我会在缓存目录中获得 3 个 j
  • 如何向 UISearchBar 添加按钮

    我需要像上图一样实现 如何向 UI 搜索栏添加按钮 适用于 iPhone 请帮帮我 提前致谢 为此 您需要创建一个类 MyScearchBar 其父类是 UISearchBar 我那个班 void layoutSubviews self a
  • spring-data-jpa 和 querydsl 的 Maven 构建问题

    我有一个用于 spring data jpa 和 QueryDsl 的 Eclipse Maven 项目 我似乎对 maven apt plugin 有问题 如果我执行 mvn clean 然后执行 mvn install 它会尝试 处理
  • Django Haystack 对同一模型的多个字段进行索引

    我正在尝试使用以下命令将 elasticsearch 嵌入到我的 Django 应用程序中django haystack 我正在尝试实现用户搜索 我的用户模型是这样的 class MyUser AbstractBaseUser userna
  • Android:如何将 DatePicker 视图日期格式从 MM/dd/yyyy 更改为 dd/MM/yyyy?

    我很长一段时间以来一直试图找到这个问题的答案 我还查看了以下链接 Android DatePicker 小工具格式 https stackoverflow com questions 4499433 android datepicker w
  • GitHub上的origin和upstream有什么区别?

    有什么区别origin and upstream on GitHub http en wikipedia org wiki GitHub When a git branch a命令执行后 它显示的某些分支的前缀为origin remotes
  • 使用 F# 3.0 进行动态 SQL 查询?

    我尝试过使用 FLINQ 但它对于 F 3 0 beta 来说已经过时了 有人可以指导我如何在 F 中创建动态 SQL 查询吗 我们最近开发了一个库 FSharpComposableQuery 旨在支持 F 3 0 及以上版本中更灵活的查询
  • 为什么“sed -n -i”会删除现有文件内容?

    运行 Fedora 25 服务器版本 sed version给我sed GNU sed 4 2 2以及通常的版权和联系信息 我创建了一个文本文件sudo vi potential sed bug Vi 显示该文件的内容 带有 set lis
  • 将 A 框架与 Three.js 相结合

    我想知道 是否可以将 Three js 元素添加到 A 框架场景中 假设 A frame 是基于 Three js 构建的 并且 three Version 0 74 0 登录到你的控制台这不应该是一件奇怪的事情 对吧 我在我的 A 框架场
  • WPF 中的颜色过渡

    我想要进行颜色过渡BackgroundWPF 窗口的颜色 我怎样才能做到这一点 例如 Brush i color Brushes Red this is the initial color Brush f color Brushes Blu
  • cmake 在 OS X 上找不到 gl.h

    我在 OS X 10 10 上并尝试使用 GLUT 和 OpenGL 构建一个 C 项目 我将其简化为展示我的问题的最小示例 我有以下内容CMakeLists txt cmake minimum required VERSION 2 8 F
  • delphi读取xml元素

    我是 XML 新手 我们需要使用新的进行地理编码必应空间数据 API http msdn microsoft com en us library gg585131 aspx 我已经设法以 xml 格式从他们那里得到结果 我将如何阅读响应中的