2013-03-23 19 views
3

我試圖用IXMLDocument(有點Lua解釋器)遍歷xml節點和屬性。 ProcessNode過程就像TXMLNodeList NodeName #text

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

檢查Node.NodeTypentText並獲得價值從Node.Text

+0

謝謝,它的工作原理。 – user2091150 2013-03-24 11:21:38

0

另外,您也可以使用INode.IsTextElement屬性。

相關問題