zoukankan      html  css  js  c++  java
  • 现在出现一个使用msxml获取属性值的麻烦

    • 问题内容: 现在出现一个使用msxml获取属性值的麻烦
    • 原讨论链接: http://community.csdn.net/expert/topicview1.asp?id=4112296
    • 所属论坛: HTML/XML     审核组: VC/MFC
    • 提问者: jacksg     解决者: goodboyws
    • 感谢: goodboyws、goodboyws、xxrl、goodboyws
    • 关键字:
    • 答案:

      我现在有一个节点的属性值要获取,这个节点的属性名有98%左右都是相同的,但是有2%的不同,现在我要把这个节点的属性值全部取出来,但是使用 IXMLDOMElement的getAttribute老是出错,请教该怎么办?比如这个文件:
      <?xml version="1.0" ?>
      <Order>
        <Account>9900234</Account>
        <Item id="1">
          <SKU>1234</SKU>
          <PricePer>5.95</PricePer>
          <Quantity>100</Quantity>
          <Subtotal Name="total">595.00</Subtotal>
          <Description>Super Widget Clamp</Description>
        </Item>
        <Item id="2">
          <SKU>6234</SKU>
          <PricePer>22.00</PricePer>
          <Quantity>10</Quantity>
          <Subtotal Name="total">220.00</Subtotal>
          <Description>Mighty Foobar Flange</Description>
        </Item>
        <Item id="3">
          <SKU>9982</SKU>
          <PricePer>2.50</PricePer>
          <Quantity>1000</Quantity>
          <Subtotal Name="total">2500.00</Subtotal>
          <Description>Deluxe Doohickie</Description>
        </Item>
        <Item id="4">
          <SKU>3256</SKU>
          <PricePer>389.00</PricePer>
          <Quantity>1</Quantity>
          <Subtotal NameC="total">389.00</Subtotal>
          <Description>Muckalucket Bucket</Description>
        </Item>
      </Order>
      就是要获取所有Name和NameC的值怎么做?
      ---------------------------------------------------------------

      IXMLDOMNodePtr node; node=xml->selectSingleNode(_bstr_t("/Order/Item[1]"));
      if (node==NULL)
      return "";

      IXMLDOMElementPtr element;
      //CComQIPtr<IXMLDOMElement> element;

      element=node;
      VARIANT result;
      result=element->getAttribute(bstr_t("SKU"));
      ---------------------------------------------------------------

      上面的方法可以帮你处理重名节点
      ---------------------------------------------------------------

      IXMLDOMNodePtr node;
      IXMLDOMElementPtr element;
      element=node;

      // 楼上的做法正确 需要将node指针强制转换成element指针,这样我们就可以用element的获得属性方法

      然后你再根据名称来取值

      ---------------------------------------------------------------

      要想枚举所有的属性名称
      IXMLDOMElementPtr element;
      element=node;
      IXMLDOMNamedNodeMap* pMap;
      element->get_attributes(&pMap);
      long len; 
      pMap->get_length(&len);
      for (long i=0; i<len; i++)
      {
          IXMLDOMNode* pNode;
          pMap->get_item(i, &pNode);
          BSTR str;
          pNode->get_nodeName(&str);
          //这个就是属性名称
          SysFreeString(str);
          pNode->Release();
      }
      pMap->Release();
         

      }

  • 相关阅读:
    js事件分类
    过3s弹出广告条,点叉号关闭
    js进阶
    js入门
    html
    R Markdown + Infinite Moon Reader + 编辑实时更新
    png转ico+windows图标+GIMP
    微生物+计算细胞倍增时间
    使用Mathjax网页插入公式
    Firefox+zoom+全局缩放比例
  • 原文地址:https://www.cnblogs.com/dongzhiquan/p/1994829.html
Copyright © 2011-2022 走看看