TXMLNodeList NodeName #text

时间:2013-03-23 21:24:50

标签: delphi

我尝试使用IXMLDocument(一种Lua解释器)迭代xml节点和属性。 ProcessNode程序如

procedure ProcessNode(node: IXMLNode);
var
  cNode: IXMLNode;
  nList: IXMLNodeList;
  i: integer;
begin
  if node = nil then
    exit;
  PrintLocal(format('%s %s', [node.NodeName, GetEnumName(TypeInfo(TNodeType), Ord(node.NodeType))]));
  nList := node.AttributeNodes;
  for i := 0 to nList.Count - 1 do
    PrintLocal(format('%s %s %s', [nList[i].NodeName, node.Attributes[nList[i].NodeName], GetEnumName(TypeInfo(TNodeType), Ord(nList[i].NodeType))]));

  cNode := node.ChildNodes.First;
  while cNode <> nil do begin
    ProcessNode(cNode);
    cNode := cNode.NextSibling;
  end;
end;

当xml喜欢为 <Content Items.Text="+\n-\n*\n/" ItemIndex="0" />
我有正确的节点名称,可以获取值

Items.Text +\n-\n*\n/ ntAttribute
ItemIndex 0 ntAttribute

但是当xml喜欢

<Items>
    <Text>+\n-\n*\n/</Text>
</Items>
<ItemIndex>0</ItemIndex>

我有

Items ntElement
Text ntElement
#text ntText
ItemIndex ntElement
#text ntText

当NodeName为“#text”时,如何从这类节点中检索值?

2 个答案:

答案 0 :(得分:2)

检查Node.NodeType ntText并获取Node.Text

的值

答案 1 :(得分:0)

或者,您也可以使用INode.IsTextElement属性。