- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在尝试使用 Delphi TXMLDocument 解析器读取 XML 文件,但我无法访问节点中的数据,而且我无法弄清楚为什么会发生这种情况。 XML 是:
<?xml version="1.0" encoding="UTF-8"?>
<types:NotificaScarto xmlns:types="http://www.fatturapa.gov.it/sdi/messaggi/v1.0" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" versione="1.0" xsi:schemaLocation="http://www.fatturapa.gov.it/sdi/messaggi/v1.0 MessaggiTypes_v1.0.xsd ">
<IdentificativoSdI>111</IdentificativoSdI>
<NomeFile>IT01234567890_11111.xml.p7m</NomeFile>
<DataOraRicezione>2013-06-06T12:00:00Z</DataOraRicezione>
<RiferimentoArchivio>
<IdentificativoSdI>100</IdentificativoSdI>
<NomeFile>IT01234567890_11111.zip</NomeFile>
</RiferimentoArchivio>
<ListaErrori>
<Errore>
<Codice>00100</Codice>
<Descrizione>Certificato di firma scaduto</Descrizione>
</Errore>
</ListaErrori>
<MessageId>123456</MessageId>
<Note>Note</Note>
</types:NotificaScarto>
我需要读取“DataOraRicezione”节点,所以我使用了这段代码:
procedure TForm1.Button1Click(Sender: TObject);
var
XMLD : IXMLDocument;
N0,N1 : IXMLNode;
begin
XMLD:=TXMLDocument.Create(Application);
XMLD.LoadFromFile('d:\IT01131820936_00175_NS_001.xml'); // the XML is on a file
XMLD.Active:=TRUE;
N0:=XMLD.ChildNodes['types:NotificaScarto'];
N1:=N0.ChildNodes['DataOraRicezione'];
ShowMessage(N1.Text); // Empty ?????
end;
我想问题可能与架构有关。直到现在我才读过像这样的 xml 文件我是新手所以我无法读取该值。我搜索类似的答案,但我无法达到我的目标。我错过了什么吗?
谢谢大卫
最佳答案
为了读取节点值,您必须使用 FindNode
方法。
function FindNode(NodeName, NamespaceURI: DOMString): IXMLNode; overload;
像这样
N0:=XMLD.ChildNodes['types:NotificaScarto'];
N1:=N0.ChildNodes.FindNode('DataOraRicezione', '');
ShowMessage(N1.Text);
对于这种特殊情况,NamespaceURI
必须为空,因为 namespace 不包含在节点本身中。
这将返回
2013-06-06T12:00:00Z
关于xml - IXMLDocument 无法读取数据,因为 IXMLNode.Text 属性始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24140835/
我有一个 XML 文件,它最初是使用空格缩进格式化的(每个嵌套项有 2 个空格)。 当我使用 IXMLDocument 加载和保存此文件时,空格缩进变为制表符(代码 #9)。 代码如下: var
我正在使用 Delphi 2010,仅使用库存标准 VCL 库。目标系统是win32。 如果我有对 IXMLDocument 的引用,如何获取 IXMLDocument 包装的基础对象的 IXMLDO
我正在尝试像这样从 IXMLDocument 中获取 xml 文本。 Doc.XML.Text; 这给了我 xml 文本,但它包含 xml 声明。 有没有办法获取不包括 xml 声明的 xml 文本
给出下面的 XML 示例; 如何轻松检查给定对象是否存在? 如何轻松添加组或用户类型的项目? (加一整 block ) group
我用 NewXMLDocument()生成我的数据的 XML 文档。 有一个SaveToXML()方法将文档保存到 XML 格式的字符串变量。 问题是 XML 字符串不包含 "encoding"头标签
使用 IXMLDocument(msxml 包装器)时,是否有理由在我的 DLL 函数中使用 CoInitialize? (或与此相关的其他 com 对象) 调用应用程序/线程是否负责调用CoInit
我正在尝试使用 Delphi TXMLDocument 解析器读取 XML 文件,但我无法访问节点中的数据,而且我无法弄清楚为什么会发生这种情况。 XML 是: 111 IT0123456
我正在尝试在 Delphi Berlin 10.1 中创建 XML我需要获取这样的文件: IT 01234567890
这个问题已经有答案了: What is the default value of 'Result' in Delphi? (3 个回答) 已关闭 6 年前。 下面的函数接受 XML 输入,对其进行解析
请我需要帮助来实现这个 xml,我对第三行有一个问题,这就是我的代码得到的: X X
我是一名优秀的程序员,十分优秀!