代码后附,NodeName正常,NodeValue总是取不到值,请大侠指点一下
xml文件的编码用gb2312试过了也不行<?xml version="1.0" encoding="UTF-8"?>
<root>
<step>
<todo>
<openurl>这是要取的值</openurl>
</todo>
</step>
</root>var steps:IDOMNodeList;
    step :IDOMNode;
    I:integer;
    gotourl:string;
begin
  XMLDoc1.LoadFromFile('1.xml');
  XMLDoc1.Active := true;
  steps := XMLDoc1.DOMDocument.getElementsByTagName('step');
  if 0 < steps.length then
  begin
    step := steps[0];
    ShowMessage(step.firstChild.nodeName);
    ShowMessage(step.firstChild.NodeValue);
    ShowMessage(step.firstChild.firstChild.nodeName);
    ShowMessage(step.firstChild.firstChild.NodeValue);

解决方案 »

  1.   

    var
      nodeList: IXMLNodeList;
      node: IXMLNode;
    begin
      nodeList := XMLDocument1.DocumentElement.ChildNodes;
      node := nodeList[1];  ShowMessage(IntToStr(node.AttributeNodes.Count)); {1}
      ShowMessage(node.Attributes['xxx']); 
      

  2.   

    我也发现是IXMLNodeList 和  IDOMNodeList 不同导致的了,但是最他们俩的区别不是很理解本来倾向于用DOM的,现在看来只能先用 IXMLNodeList 实现功能了还是谢谢这么快给我回应!