结合读取opml ,把数据链接到treeview

一些主要代码

<HierarchicalDataTemplate  ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Text}"/>
</HierarchicalDataTemplate>

然后是Rss类

public class Rss
    {
    int id;
public int Id {
    get { return id; }
    set { id = value; }
        }
    int parentId;//这个暂时用不到
public int ParentId {
    get { return parentId; }
    set { parentId = value; }
        }
string  text;//这个用来显示标题
public string  Text {
    get { return text; }
    set { text = value; }
        }
string  xmlUrl;//留着备用
public string  XmlUrl {
    get { return xmlUrl; }
    set { xmlUrl = value; }
        }
public List<Rss> Children { get; set; }
    public Rss()
        {
    Children=new List<Rss>();
    this.ParentId=-1;
               }
    }

直接读取文件都写在主文件里了。

List<Rss> rsslist;
    public Window1()
    {
    InitializeComponent();
    rsslist=new List<Rss>();
    ReadOpml();//读取default.opml
    tr_1.ItemsSource=rsslist;
        }
private void ReadOpml() {
string str= System.AppDomain.CurrentDomain.BaseDirectory;
        if (File.Exists("default.opml"))
        {
 XmlDocument doc = new XmlDocument();
 doc.Load("default.opml");
 XmlNodeList otls = doc.GetElementsByTagName("outline");
   goTolist(otls);//把数据读取到list
} else {//功能预留
 MessageBox.Show("没有opml文件,创建一个空的default.opml");
  File.Create("default.opml");
        }

    }//openopml
private void goTolist(XmlNodeList otls){
for(int i = 0; i<otls.Count;i++){
if(otls[i].Attributes.GetNamedItem("type").InnerText == "NFgroup"){
    Rss tmprss=new Rss();
    tmprss.Id=i;
tmprss.Text=otls[i].Attributes.GetNamedItem("text").InnerText;
    createChilren(tmprss,i,otls);
     rsslist.Add(tmprss);
    }
}
}//goTolist
private void createChilren(Rss tmprss,int i,XmlNodeList otls){
    for(int j=i+1;j<otls.Count;j++){
                if(otls[j].Attributes.GetNamedItem("type").InnerText == "NFgroup")
                    return;
                tmprss.Children.Add(new Rss{Id=j,ParentId=i,Text=otls[j].Attributes.GetNamedItem("text").InnerText});
                }

            }

考虑到只有两层所以就用循环遍历取数据,如果是多层的就要用到递归了。
这里写图片描述
下一步就是实现点击条目显示数据了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值