3

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"の場合、このようなタイプのノードから値を取得するにはどうすればよいですか?

4

2 に答える 2

2

値を確認Node.NodeTypentTextて取得するNode.Text

于 2013-03-23T22:09:02.387 に答える
0

または、プロパティを使用することもできINode.IsTextElementます。

于 2015-12-09T12:54:36.847 に答える