再遇XML读取问题

2024-03-16 04:50
文章标签 xml 问题 读取 再遇

本文主要是介绍再遇XML读取问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

其实挺郁闷的,写了这么多关于XML操作的代码还是不熟悉使用C#对XML进行操作...昨晚在一个网站上面听歌,发现可以浏览它的歌曲列表XML文件,想把歌都下载下来,顺手写了个程序...同时熟悉了一下委托的用法(其实自己对委托非常不熟悉..)

 

最后的迅雷调用方式没有写好,,有空补上..昨晚生成那些LST列表不能实现重命名资源搞到我很郁闷的说..

 

ExpandedBlockStart.gif 代码
using  System;
using  System.Collections.Generic;
using  System.ComponentModel;
using  System.Data;
using  System.Drawing;
using  System.Linq;
using  System.Text;
using  System.Windows.Forms;
using  System.Threading;
using  System.Xml;
using  System.IO;
using  System.Net;

namespace  DjmaxSongLoader
{
    
//
     // <embed src=' http://pub.maniax.kr/djmax/ost/MP3Player.swf?configURL=http : // pub.maniax.kr/djmax/ost/all.xml'
    
// type='application/x-shockwave-flash'
    
// width='480' height='636'
    
// bgcolor='#333333'
    
// allowFullScreen='false'> 
    
// </embed>
     //

    
public   partial   class  Form1 : Form
    {
        
public  Form1()
        {
            InitializeComponent();

            tbXMLUrl.Text 
=   " http://pub.maniax.kr/djmax/ost/all.xml " ;
            tbMusicUrl.Text 
=   " http://pub.maniax.kr/djmax/ost/mp3/ " ;
        }

        
///   <summary>
        
///  获取内容线程
        
///   </summary>
         private  Thread thread;

        
///   <summary>
        
///  对主界面的操作,使用委托
        
///   </summary>
        
///   <param name="str"></param>
         private   delegate   void  WriteTextBox(StringBuilder str);

        
///   <summary>
        
///  线程开启
        
///   </summary>
        
///   <param name="sender"></param>
        
///   <param name="e"></param>
         private   void  button1_Click( object  sender, EventArgs e)
        {
            
this .Text  +=   "  运行ing... " ;
            ThreadStart threadStart 
=   new  ThreadStart( this .GetXMLInfo);
            thread 
=   new  Thread(threadStart);
            thread.Start();
        }

        
///   <summary>
        
///  委托控制界面
        
///   </summary>
        
///   <param name="str"></param>
         private   void  SetTextBox(StringBuilder str)
        {
            tbSongInfo.Text 
=  str.ToString();

            
this .Text  =   this .Text.Split( '   ' )[ 0 ];
        }

        
///   <summary>
        
///  分析XML
        
///   </summary>
         private   void  GetXMLInfo()
        {
            StringBuilder str 
=   new  StringBuilder();

            
string  url  =  tbXMLUrl.Text;

            XmlDocument xmlDoc 
=   new  XmlDocument();
            
// xmlDoc.Load(url);
            xmlDoc.LoadXml(GetWebInfo(url).Replace( " & " " &amp; " ));

            XmlNodeList nodeList 
=  xmlDoc.SelectSingleNode( " config " ).ChildNodes;
            
foreach  (XmlNode node  in  nodeList)
            {
                XmlElement xe 
=  (XmlElement)node;

                
if  (xe.Name  ==   " song " )
                {
                    XmlNodeList xnl 
=  xe.ChildNodes;

                    
string  fileName  =   "" ;
                    
string  title  =   "" ;
                    
string  artist  =   "" ;

                    
foreach  (XmlNode xn1  in  xnl)
                    {
                        XmlElement xe2 
=  (XmlElement)xn1;

                        
if  (xe2.Name  ==   " artist " )
                        {
                            artist 
=  xe2.InnerText;
                        }
                        
if  (xe2.Name  ==   " title " )
                        {
                            title 
=  xe2.InnerText;
                        }
                        
if  (xe2.Name  ==   " fileName " )
                        {
                            
if  (xe2.InnerText  !=   " null.mp3 " )
                                fileName 
=  xe2.InnerText;
                            
else
                                fileName 
=   "" ;
                        }

                        
if  (fileName  !=   "" )
                        {
                            str.AppendFormat(
" {4}{0}?/{1}[{2}].{3}\r\n " , fileName, title, artist, fileName.Split( ' . ' )[ 1 ], tbMusicUrl.Text);
                        }
                    }
                }
            }

            WriteTextBox wtb 
=   new  WriteTextBox(SetTextBox);
            
this .BeginInvoke(wtb, str);

            
try
            {
                
this .thread.Abort();
            }
            
catch  { }
        }

        
///   <summary>
        
///  获取网页内容
        
///   </summary>
        
///   <param name="url"></param>
        
///   <returns></returns>
         private   string  GetWebInfo( string  url)
        {
            
try
            {
                
string  rl;
                WebRequest Request 
=  WebRequest.Create(url);
                WebResponse Response 
=  Request.GetResponse();
                Stream resStream 
=  Response.GetResponseStream();
                StreamReader sr 
=   new  StreamReader(resStream, Encoding.Default);
                StringBuilder sb 
=   new  StringBuilder();
                
while  ((rl  =  sr.ReadLine())  !=   null )
                {
                    sb.Append(rl);
                }

                
return  sb.ToString();
            }
            
catch  (Exception ex)
            {
                
return  ex.ToString();
            }
        }

        
///   <summary>
        
///  调用迅雷下载
        
///   </summary>
        
///   <param name="sender"></param>
        
///   <param name="e"></param>
         private   void  btXunleiDown_Click( object  sender, EventArgs e)
        {
            
// vbs
            
// Set ThunderAgent = CreateObject("ThunderAgent.Agent.1") Call ThunderAgent.AddTask(" http://www.hxit.net/files/bjhyn.mp3 ","北京欢迎你.mp3","c:\a\",""," http://www.readlog.cn ",1,0,5) Call ThunderAgent.CommitTasks2(1) Call ThunderAgent.AddTask(" http://file.fzone.cn/upload2/hompyFile/2007/28/921524670987.wma ","放羊的星星.wma","c:\a\b\c\",""," http://www.readlog.cn ",1,0,5) Call ThunderAgent.CommitTasks2(1) Set ThunderAgent = Nothing
        }
    }
}

 

 

转载于:https://www.cnblogs.com/Zoya/archive/2009/12/09/1620084.html

这篇关于再遇XML读取问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/814337

相关文章

Vue3绑定props默认值问题

《Vue3绑定props默认值问题》使用Vue3的defineProps配合TypeScript的interface定义props类型,并通过withDefaults设置默认值,使组件能安全访问传入的... 目录前言步骤步骤1:使用 defineProps 定义 Props步骤2:设置默认值总结前言使用T

Web服务器-Nginx-高并发问题

《Web服务器-Nginx-高并发问题》Nginx通过事件驱动、I/O多路复用和异步非阻塞技术高效处理高并发,结合动静分离和限流策略,提升性能与稳定性... 目录前言一、架构1. 原生多进程架构2. 事件驱动模型3. IO多路复用4. 异步非阻塞 I/O5. Nginx高并发配置实战二、动静分离1. 职责2

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据

解决Nginx启动报错Job for nginx.service failed because the control process exited with error code问题

《解决Nginx启动报错Jobfornginx.servicefailedbecausethecontrolprocessexitedwitherrorcode问题》Nginx启... 目录一、报错如下二、解决原因三、解决方式总结一、报错如下Job for nginx.service failed bec

SysMain服务可以关吗? 解决SysMain服务导致的高CPU使用率问题

《SysMain服务可以关吗?解决SysMain服务导致的高CPU使用率问题》SysMain服务是超级预读取,该服务会记录您打开应用程序的模式,并预先将它们加载到内存中以节省时间,但它可能占用大量... 在使用电脑的过程中,CPU使用率居高不下是许多用户都遇到过的问题,其中名为SysMain的服务往往是罪魁

使用Java读取本地文件并转换为MultipartFile对象的方法

《使用Java读取本地文件并转换为MultipartFile对象的方法》在许多JavaWeb应用中,我们经常会遇到将本地文件上传至服务器或其他系统的需求,在这种场景下,MultipartFile对象非... 目录1. 基本需求2. 自定义 MultipartFile 类3. 实现代码4. 代码解析5. 自定

MySQ中出现幻读问题的解决过程

《MySQ中出现幻读问题的解决过程》文章解析MySQLInnoDB通过MVCC与间隙锁机制在可重复读隔离级别下解决幻读,确保事务一致性,同时指出性能影响及乐观锁等替代方案,帮助开发者优化数据库应用... 目录一、幻读的准确定义与核心特征幻读 vs 不可重复读二、mysql隔离级别深度解析各隔离级别的实现差异

C++ vector越界问题的完整解决方案

《C++vector越界问题的完整解决方案》在C++开发中,std::vector作为最常用的动态数组容器,其便捷性与性能优势使其成为处理可变长度数据的首选,然而,数组越界访问始终是威胁程序稳定性的... 目录引言一、vector越界的底层原理与危害1.1 越界访问的本质原因1.2 越界访问的实际危害二、基

Python多线程应用中的卡死问题优化方案指南

《Python多线程应用中的卡死问题优化方案指南》在利用Python语言开发某查询软件时,遇到了点击搜索按钮后软件卡死的问题,本文将简单分析一下出现的原因以及对应的优化方案,希望对大家有所帮助... 目录问题描述优化方案1. 网络请求优化2. 多线程架构优化3. 全局异常处理4. 配置管理优化优化效果1.