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();
         

      }

  • 相关阅读:
    网页css效果调试技巧
    font: 300 12px/24px "宋体",arial,serif;
    php调试心得
    linux的vim命令介绍和其他命令
    wamp提示can't find driver 针对mysql数据库
    调试yii程序php页面显示中文
    【rgw | 运维】部署rgw
    【ceph | 运维】pool相关命令
    【ceph | 运维】application not enabled 的解决方法
    【ceph | 运维】nautilus版本编译
  • 原文地址:https://www.cnblogs.com/dongzhiquan/p/1994829.html
Copyright © 2011-2022 走看看