none
xml中添加节点问题 RRS feed

  • 问题

  • 我想在xml文档的<items>节点出添加子节点<item>,但是运行时总是错误,
    错误提示为:System.NullReferenceException: 未将对象引用设置到对象的实例。
    错误位置:
                      行 73:             rootnode.AppendChild(linkElement);


    xml文件如下:
    <?xml version="1.0" encoding="utf-8"?>
    <puffar>
      <copy>
        <visitsite>
        </visitsite>
       </copy>
      <items>
      <items>
    </puffar>

    代码如下:
    {...

     XmlNode rootnode = xdoc.SelectSingleNode("Items");
     XmlElement linkElement = xdoc.CreateElement("Item");
     rootnode.AppendChild(linkElement);

    ...}


    这是为什么呢?
    2009年5月6日 17:07

答案

  • XmlNode rootnode = xdoc.SelectSingleNode("Items");

    这个xpath 不对哦



    如果这个doc 只有一个puffar  puffar里面只有一个 items 
    可以用


    XmlNode rootnode = xdoc.SelectSingleNode("//Items");  表示根节点下任意层数的Items 标记
    工作突然有点忙 嘿嘿
    • 已标记为答案 kinla 2009年5月7日 3:59
    2009年5月7日 2:34

全部回复

  • XmlNode rootnode = xdoc.SelectSingleNode("Items");

    这个xpath 不对哦



    如果这个doc 只有一个puffar  puffar里面只有一个 items 
    可以用


    XmlNode rootnode = xdoc.SelectSingleNode("//Items");  表示根节点下任意层数的Items 标记
    工作突然有点忙 嘿嘿
    • 已标记为答案 kinla 2009年5月7日 3:59
    2009年5月7日 2:34
  • 你真的好厉害,谢谢你!
    那如果
    <puffar>
      <copy>
        <visitsite>
               <text>
               </text>
        </visitsite>
       </copy>
      <items>
             <text>
             </text>
      <items>
    </puffar>
    我想取<visitsite>下的<text>,应该写成
    XmlNode rootnode = xdoc.SelectSingleNode("//visitsite/text"); 
    还是:
    XmlNode rootnode = xdoc.SelectSingleNode("/visitsite/text"); 

    2009年5月7日 3:59
  • 第一个肯定能行

    也可以

    XmlNode rootnode = xdoc.SelectSingleNode("puffar/copy/visitsite/text"); 


    工作突然有点忙 嘿嘿
    2009年5月7日 4:26
  • 问题解决了,谢谢你

    2009年5月7日 7:12