- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个根据 MySQL 行生成 XML 的 WebService,结果如下:
<DB>
<CONFIG>
<ID>1</ID>
<CODAUTORIZACAO>12345</CODAUTORIZACAO>
<CODUSUARIO>12345</CODUSUARIO>
<CODEMPRESA>12345</CODEMPRESA>
<NOMEEMPRESA>TESTE</NOMEEMPRESA>
</CONFIG>
<COLETEIROS>
<ID>1</ID>
<CODIGO>123</CODIGO>
<NOME>teste</NOME>
<PRECOCX>1</PRECOCX>
<PRECOKG>1</PRECOKG>
<PRECOCS>1</PRECOCS>
</COLETEIROS>
<COLETEIROS>
<ID>2</ID>
<CODIGO>135</CODIGO>
<NOME>ab</NOME>
<PRECOCX>12</PRECOCX>
<PRECOKG>321</PRECOKG>
<PRECOCS>12</PRECOCS>
</COLETEIROS>
</DB>
如果您看到,此 XML 有两个具有相同名称的节点 "COLETEIROS",但是当我找到带有 XMLDocument.DocumentElement.ChildNodes.FindNode('COLETEIROS') 的节点时> 我只能看到第一个。有没有办法在存在时查找Node?我正在尝试用这些值填充组合框,但我是 XMLDocument 新手。
感谢您的帮助!
最佳答案
如果有多个子节点,FindNode 将仅返回任何指定节点的第一个。 FindNode 返回一个 IXMLNode。
要获取具有指定名称的所有节点的列表,请使用 IDOMNode 接口(interface)的 selectNodes() 方法。 selectNodes() 返回一个IDOMNodeList。然后,您可以像平常一样迭代节点列表。
uses
XMLDoc,
XMLDOM,
XMLIntf;
procedure ExampleUsingSelectNodes;
const
XML = '<DB>'
+ ' <CONFIG>'
+ ' <ID>1</ID>'
+ ' <CODAUTORIZACAO>12345</CODAUTORIZACAO>'
+ ' <CODUSUARIO>12345</CODUSUARIO>'
+ ' <CODEMPRESA>12345</CODEMPRESA>'
+ ' <NOMEEMPRESA>TESTE</NOMEEMPRESA>'
+ ' </CONFIG>'
+ ' <COLETEIROS>'
+ ' <ID>1</ID>'
+ ' <CODIGO>123</CODIGO>'
+ ' <NOME>teste</NOME>'
+ ' <PRECOCX>1</PRECOCX>'
+ ' <PRECOKG>1</PRECOKG>'
+ ' <PRECOCS>1</PRECOCS>'
+ ' </COLETEIROS>'
+ ' <COLETEIROS>'
+ ' <ID>2</ID>'
+ ' <CODIGO>135</CODIGO>'
+ ' <NOME>ab</NOME>'
+ ' <PRECOCX>12</PRECOCX>'
+ ' <PRECOKG>321</PRECOKG>'
+ ' <PRECOCS>12</PRECOCS>'
+ ' </COLETEIROS>'
+ '</DB>';
var
doc: TXMLDocument;
select: IDOMNodeSelect;
nodes: IDOMNodeList;
begin
doc := TXMLDocument.Create(nil);
doc.LoadFromXML(XML);
select := doc.DocumentElement.DOMNode as IDOMNodeSelect;
nodes := select.selectNodes('COLETEIROS');
// At this point nodes is an IDOMNodeList with length 2 (i.e. contains both COLETEIROS nodes)
// process the list of nodes here
end;
或者,您可以迭代文档中的每个子节点,并测试每个子节点的所需节点名称,并仅处理与您想要的名称匹配的子节点。这比较冗长,但完全适用于 XMLDoc 接口(interface),而不需要 DOM 支持(这对于您的情况可能很重要,也可能不重要)。
假设本例中的示例 XML 文档具有相同的 XML const 声明,则手动迭代的代码将类似于:
var
doc: TXMLDocument;
node: IXMLDOMNode;
begin
doc := TXMLDocument.Create(nil);
doc.LoadFromXML(XML);
node := doc.DocumentElement.ChildNodes.First;
while Assigned(node) do
begin
if node.NodeName = 'COLETEIROS' then
begin
// Do something with this node
end;
node := node.NextSibling
end;
end;
关于xml - FindNode 具有两个等于节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38961983/
我创建了一个根据 MySQL 行生成 XML 的 WebService,结果如下: 1 12345 12345 12345
我有一个包含 1,2,...,9 在内的整数的二叉搜索树。我的遍历方法有效,我知道节点在那里并且顺序正确。 我创建了两种搜索方法,一种查找并返回节点,另一种调用该方法并根据返回的内容打印节点是否存在(
这是我的代码的一个简短示例,但很好理解我的问题。 我有一个像这样的 xml 文件: one two 这是我在delphi中的代码: procedure TForm1.But
我有以下 xml 代码片段: textb textc textd textb textc textd 我用 xml::twig解析如下: my
我有一个 TreeView 控件。下面的代码用于查找具体的父节点。 TreeView AllProductsTreeView; TreeNode nodeFound = AllProductsTree
XML: Gigi Male 3 Gigia Female 2
我正在使用 HTML-TreeBuilder-XPath 解析html内容 在Perl中。我已经得到了我需要的数据的xpath位置。我面临的问题是,单个结果返回了xpath $html->findno
我有一个简单的 xml 文件,如下所示: Bactrian Camel 450 to 500 kg. Blah blah blah
我有一个实现可迭代接口(interface)的 LinkedList 类,在 LinkedList 类中我有一个内部节点类。我有另一个运行 JUnit 4 的 TestLinkedList 类。该测试
我是 XML 新手,正在尝试使用 Delphi XE TXMLDocument 访问以下 XML 中的数据 4294967295 18 123.6
我正在使用 XML::LibXML::Reader 解析大型文档,遇到了属性 xmlns 导致 findnodes() 失败的问题。我通过添加正则表达式来删除 xmls 属性来修复它,但我想知道是否有
我有一个多线程程序,它使用 QMap 来存储一些数据,但是当调用 contains() 函数时,它时不时地在同一行崩溃: myMap.contains(a) -> 键和值不是指针。 崩溃: #0 fi
我正在使用 XML::LibXML::Reader 解析大型文档,遇到了属性 xmlns 导致 findnodes() 失败的问题。我通过添加正则表达式来删除 xmls 属性来修复它,但我想知道是否有
我正在尝试实现 findNode 方法作为 java 中二叉搜索树的一部分。 public Node findNode(int findkey){ Node tempNode5 = root;
xml: Gigi Male 3 ../images/Gigi.png Gigia
这是一些我遇到问题的代码,我处理了一些 XML,并在 OO 类的方法中从文档中重复的几个节点中的每一个节点中提取了一个元素。每个节点的子树中应该只有一个这样的元素,但我的代码获取所有元素,就好像它在整
我正在使用 XML::LibXML ,我只需要获取 XPath 表达式指定的节点数。 使用下面的前两个代码行中的任何一个都会产生我正在寻找的内容。我可以使用 count XPath 函数与 findv
谁能解释为什么 ChildNodes.FindNode('') (1) 失败但 ChildNodes[''] (2) 成功? ==> 代码: const cNodeSOAPEnvelope =
以下只是我正在处理的 XML 的一小部分。我想提取子树下的所有属性、标签名称和文本。 Chicago 30.970 -90.723 我有这样的编码示例: #!/usr/bin/perl u
我是一名优秀的程序员,十分优秀!