将字符串转换成xml并取得对应的值

如数据库中有一个字段保存了xml格式的一串字符串:

<?xml version="1.0" encoding="utf-16"?>
<ArrayOfPassengerInfoForXml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <PassengerInfoForXml>
    <Person>1</Person>
    <Name>张三</Name>
    <InsureNumber>2</InsureNumber>
  </PassengerInfoForXml>
  <PassengerInfoForXml>
    <Person>1</Person>
    <Name>李四</Name>
    <InsureNumber>1</InsureNumber>
  </PassengerInfoForXml>
</ArrayOfPassengerInfoForXml>

 

方法一:js

//字符串转化为xml

function toXmlDom(source) {

    var xmlDoc = null;

    if (window.ActiveXObject) {

        var ARR_ACTIVEX = ["MSXML4.DOMDocument", "MSXML3.DOMDocument", "MSXML2.DOMDocument", "MSXML.DOMDocument", "Microsoft.XmlDom"];

        var XmlDomflag = false;

        for (var i = 0; i < ARR_ACTIVEX.length && !XmlDomflag; i++) {

            try {

                var objXML = new ActiveXObject(ARR_ACTIVEX[i]);

                xmlDoc = objXML;

                XmlDomflag = true;

            } catch (e) {

            }

        }

        if (xmlDoc) {

            xmlDoc.async = false;

            xmlDoc.loadXML(source);

        }

    } else {

        var parser = new DOMParser();

        var xmlDoc = parser.parseFromString(source, "text/xml");

    }

    return xmlDoc;

}

 

function getXmlDom(source) {

var strXML="";   //strXML为上面的xml格式的字符串

 var s = toXmlDom(strXML); 

 $(s).find("PassengerInfoForXml").each( //得到每一个签

     function (id, item) {

            //获取标签的内容

            var Person= $(item).find("Person").eq(0).text();

            var Name= $(item).find("Name").eq(0).text();

           var InsureNumber= $(item).find("InsureNumber").eq(0).text();

            alert(Name);

         }

    );



}

 

方法二:asp.net 后台

1) 建一个类PassengerInfoForXml.cs,对应每个标签的字段

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;



namespace WebApplication1

{

    public class PassengerInfoForXml

    {

        public Int32 Person { get; set; }

        public String Name { get; set; }

        public Int32 InsureNumber { get; set; }

    }

}

2) 获取每个标签的值

  protected List<PassengerInfoForXml> passengerlist = null;

        string strxml = "";  //上面的xml格式字符串



        protected void Button1_Click(object sender, EventArgs e)

        {

            passengerlist = ConvertToObject(strxml, typeof(List<PassengerInfoForXml>)) as List<PassengerInfoForXml>;

            for (int i = 0; i < passengerlist.Count; i++)

            {               

                var Person = passengerlist[i].Person;

                var Name = passengerlist[i].Name;

                var InsureNumber = passengerlist[i].InsureNumber;

                Response.Write("<script>alert('"+Name+"')</script>");

            }

        }

        //转换成对象PassengerInfoForXml

        public static object ConvertToObject(string xml, Type objectType)

        {

            object obj2 = null;

            if (string.IsNullOrEmpty(xml))

            {

                return obj2;

            }

            using (StringReader reader = new StringReader(xml))

            {

                XmlSerializer serializer = new XmlSerializer(objectType);

                return serializer.Deserialize(reader);

            }

        }

 

 

 

 

你可能感兴趣的:(xml)