请问从XML中提取相应的信息?

解决方案 »

  1.   

    从XML中提取信息,要讲具体点,那得看用什么来实现。是用JAVASCRIPT,还是用ASP.NET中的后台实现
      

  2.   

    msxml
    dataset
    System.Xml
    System.Xml.Xsl
    xslt
    xpath
      

  3.   


    /// <summary>
    /// 一行记录,获得某个结点的值
    /// </summary>
    /// <param name="strXML"></param>
    /// <param name="strName"></param>
    /// <returns></returns>
    public static string GetXmlValue(string strXML,string strName)
    {
    try
    {
    XmlDocument xDoc = new XmlDocument();
    xDoc.LoadXml(strXML);
    XmlNode xn = xDoc.SelectSingleNode("//"+strName);
    return xn.InnerText; }
    catch
    {
    return "";
    }

    }
    /// <summary>
    /// 在xmlData中根据ByNodeName的内容ByNodeText,得到同级别节点NodeName的NodeText
    /// </summary>
    /// <param name="xmlData"></param>
    /// <param name="ByNodeName"></param>
    /// <param name="ByNodeText"></param>
    /// <param name="NodeName"></param>
    /// <returns></returns>
    public static string GetNodeText(string xmlData,string ByNodeName,string ByNodeText,string NodeName)
    {
    XmlDocument xmlDoc=new XmlDocument();
    xmlDoc.LoadXml(xmlData);

    XmlNodeList xnList=xmlDoc.SelectNodes(@"//"+ByNodeName);
    foreach(XmlNode xn in xnList)
    {
    if(xn.InnerText.Equals(ByNodeText))
    {
    XmlNodeList xnl=xn.ParentNode.ChildNodes;
    foreach(XmlNode xmlNode in xnl)
    {
    if(xmlNode.Name.Equals(NodeName))
    return xmlNode.InnerText;
    }

    }
    }
    return "";

    }
    /// <summary>
    /// 根据子节点ByNodeName和ByNodeText,删除整个父节点
    /// </summary>
    /// <param name="xmlData"></param>
    /// <param name="ByNodeName"></param>
    /// <param name="ByNodeText"></param>
    /// <returns></returns>
    public static string RemoveParent(string xmlData,string ByNodeName,string ByNodeText)
    {
    XmlDocument xmlDoc=new XmlDocument();
    xmlDoc.LoadXml(xmlData);

    XmlNodeList xnList=xmlDoc.SelectNodes(@"//"+ByNodeName);
    foreach(XmlNode xn in xnList)
    {
    if(xn.InnerText.Equals(ByNodeText))
    {
    xmlDoc.DocumentElement.RemoveChild(xn.ParentNode);
    }
    }
    return xmlDoc.InnerXml;

    }
    /// <summary>
    /// 插入整个一个节点即:一行数据
    /// </summary>
    /// <param name="xmlData"></param>
    /// <param name="strInsert"></param>
    /// <returns></returns>
    public static string InsertXML(string xmlStr1,string xmlStr2)
    {
    XmlDocument d1;
    d1=new XmlDocument();
    d1.LoadXml("<?xml version='1.0' ?>"+xmlStr1);

    XmlDocumentFragment docfrag;
    XmlElement currnode ;
    docfrag = d1.CreateDocumentFragment();
    docfrag.InnerXml = xmlStr2;
    currnode = d1.DocumentElement;
    currnode.InsertAfter(docfrag, currnode.LastChild);
    return d1.DocumentElement.OuterXml; 

    }