现有一个xml 文件结构如下:
<Report>
<Body>
<Table>
<Columns>
<Column width=2/>
<Column width=3/>
</Columns>
<Row>
<Cell name="a"/>
<Cell name="b"/>
</Row>
</Table>
<Table>
<Columns>
<Column width=2/>
<Column width=3/>
</Columns>
<Row>
<Cell name="c"/>
<Cell name="d"/>
</Rows>
</Table>
</Body>
</Report>
说明:每个表格由行(Row)和列(ColumnS)组成,而Row里面的Cell个数和Columns里面的Columns是一一对应的,控制这这个列的宽度。现在要实现的功能是用Xpath查找到Name为“c”的Cell节点(所有Cell节点的name属性值不会相同,要删除掉这个cell,并且删除掉对应的Columns中的Column。用.net中xmldocument类+Xpath如何实现?
谢谢了

解决方案 »

  1.   

    要实现的功能是用Xpath查找到Name为“c”的Cell节点(所有Cell节点的name属性值不会相同,要删除掉这个cell,并且删除掉对应的Columns中的Column那么 name=c的这个cell是哪个column的cell呢
      

  2.   

    那个Columns中Column是按照文档的顺序来对应的,就是说第n个Column对应第n个Cell
      

  3.   

    XMLNode没有Index的概念你可以写个While,然后看PreviousSibling是否为空
    然后记住Index,在找到父节点的PreviousSibling也就是Columns
    然后删除相应的Index的子节点
    比较麻烦
      

  4.   

    找到个办法
    具体参考XPath中的preceding-sibling
    意思包含上下文节点之前的所有兄弟节点XmlNode node = ........//找到你想要的节点
    int pos = node.SelectNodes("preceding-sibling::node()").Count;
    这个pos就是node节点所在其父节点的Index,从0开始然后你就可以根据这个Index删除Columns的节点了