gpt4 book ai didi

xml - 如何将节点的内部文本和XML提取为字符串?

转载 作者:行者123 更新时间:2023-12-04 00:55:29 25 4
gpt4 key购买 nike

我有以下 XML 结构:

<?xml version="1.0"?>
<main>
<node1>
<subnode1>
<value1>101</value1>
<value2>102</value2>
<value3>103</value3>
</subnode1>
<subnode2>
<value1>501</value1>
<value2>502</value2>
<value3>503</value3>
</subnode2>
</node1>
</main>

在 Delphi 中,我正在寻找一个将节点的内部文本和 XML 作为字符串返回的函数。例如 <node1>字符串应该是(如果可能,包括缩进和换行符):

    <subnode1>
<value1>101</value1>
<value2>102</value2>
<value3>103</value3>
</subnode1>
<subnode2>
<value1>501</value1>
<value2>502</value2>
<value3>503</value3>
</subnode2>

我在 Delphi 10 中找不到这样的函数。

有这样的功能吗?

或者在 Delphi 10 中实现一个的最佳方法是什么?

最佳答案

处理此问题的正确方法是使用实​​际的 XML 库,例如 Delphi 的 native TXMLDocument 组件或 IXMLDocument 接口(interface)(或可用于 Delphi 的任何数量的第 3 方 XML 库)。您可以将 XML 加载到其中,然后找到 IXMLNode 对于 <node1>元素(或任何你想要的元素),然后阅读它的 XML 需要的属性。

例如:

uses
..., Xml.XMLIntf, Xml.XMLDoc;

var
XML: DOMString;
Doc: IXMLDocument;
Node: IXMLNode;
begin
XML := '<?xml version="1.0"?><main><node1>...</node1></main>';
Doc := LoadXMLData(XML);
Node := Doc.DocumentElement; // <main>
Node := Node.ChildNodes['node1'];
XML := Node.XML;
ShowMessage(XML);
end;

或者:

uses
..., Xml.XMLIntf, Xml.xmldom, Xml.XMLDoc;

var
XML: DOMString;
Doc: IXMLDocument;
Node: IXMLNode;
XPath: IDOMNodeSelect;
domNode: IDOMNode;
begin
XML := '<?xml version="1.0"?><main><node1>...</node1></main>';
Doc := LoadXMLData(XML);
XPath := Doc.DocumentElement.DOMNode as IDOMNodeSelect;
domNode := XPath.selectNode('/main/node1');
Result := TXMLNode.Create(domNode, nil, (Doc as IXmlDocumentAccess).DocumentObject);
XML := Node.XML;
ShowMessage(XML);
end;

关于xml - 如何将节点的内部文本和XML提取为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62802155/

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