gpt4 book ai didi

xml - 尝试使用 ChildNodes.FindNode 在 XML 中查找节点

转载 作者:数据小太阳 更新时间:2023-10-29 02:01:08 27 4
gpt4 key购买 nike

我是 XML 新手,正在尝试使用 Delphi XE TXMLDocument 访问以下 XML 中的数据

<?xml version="1.0" encoding="UTF-8" ?>
<sfc:SFC xmlns:sfc="AWS_SFC">
<ID>4294967295</ID>
<SFC_TYPE>
<WindSpeed>18</WindSpeed>
<WindDir>123.6</WindDir>
<Temperature>22.9</Temperature>
<Pressure>1013.25</Pressure>
<Humidity>57.9</Humidity>
<DewPoint>16.8</DewPoint>
</SFC_TYPE>'
<Location>
<longitude>18.5</longitude>
<latitude>-34.5</latitude>
<altitude>50.8</altitude>
</Location>
<StampDateTime>2012-12-17T09:30:47.0Z</StampDateTime>
</sfc:SFC>

我的代码是这样开始的:

var
SFC_Info: IXMLNode;
SFC_Type: IXMLNode;
begin
SFC_Info := XMLDocument1.DocumentElement;
SFC_Type := SFC_Info.ChildNodes.First;
while (SFC_Type.NodeName <> 'SFC_TYPE') do
SFC_Type := SFC_TYPE.NextSibling;
memDebug.Lines.Add('Wind speed = ' + SFC_Type.ChildNodes.FindNode('WindSpeed').Text);
etc

这就是我想要的,但使用循环似乎很麻烦。我原以为访问“SFC_TYPE”节点可以通过

  SFC_Type := SFC_Info.ChildNodes.FindNode('SFC_TYPE');

但这会返回 nil。

我错过了什么吗?

最佳答案

根节点使用命名空间 (AWS_SFC)。因此,XML 文档中的子节点必须携带相同的 namespace ,而在您的 XML 文档中则不是这种情况。

只需将空白的NameSpaceURI 参数添加到FindNode 过程,它就会找到节点:

SFC_Type := SFC_Info.ChildNodes.FindNode('SFC_TYPE', '');

关于xml - 尝试使用 ChildNodes.FindNode 在 XML 中查找节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15404645/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com