반응형
//Youtube Rss Atom형식의 XML을 파싱하는 소스
using(XmlTextReader rssReader = new XmlTextReader("Youtube URl")) 
{ 
	XmlDocument xmlDoc = new XmlDocument(); //XML 객체 생성      
	xmlDoc.Load(rssReader); //URL Load

	//Select all nodes starting with "entry"
	XmlNodeList xmlNodeList = xmlDoc.GetElementsByTagName("entry"); //XML에 entry태그의 데이터를 전부 가지고 와서 List로 만들어준다.

	//각각의 노드로 만들어서 반복문을 돌린다.
	foreach(XmlNode node in xmlNodeList) 
	{ 	
		XmlDocument innerXmlDocument = new XmlDocument(); //내부 객체를 파싱하기 위한 XmlDocument를 생성한다.
		innerXmlDocument.LoadXml(node.OuterXml); //entry 노드의 데이터를 파싱한다.

		//innerXmlDocument.GetElementsByTagName("media:title")[0].InnerText => XML 태그의 텍스트를 전부 가지고 온다.
		//innerXmlDocument.GetElementsByTagName("media:thumbnail")[0].Attributes["url"].Value 태그 안에 있는 속성의 값만 가지고 온다.

		string vYoutube_URL = innerXmlDocument.GetElementsByTagName("link")[0].Attributes["href"].Value;
		string vThumbnail_URL innerXmlDocument.GetElementsByTagName("media:thumbnail")[0].Attributes["url"].Value;
		string vTitle = innerXmlDocument.GetElementsByTagName("media:title")[0].InnerText;
		string vDescription = innerXmlDocument.GetElementsByTagName("media:description")[0].InnerText;
	}
}
반응형
[HttpPost]
public ActionResult GetRSSData(JsonData value)
{
	DataTable dt = new DataTable();
	dt = JsonConvert.DeserializeObject(value.vJsonData);
	string str_RssData = "";

	XmlDocument rssXmlDoc = new XmlDocument();
	rssXmlDoc.Load(dt.Rows[0]["Blog_URL"].ToString());

	str_RssData = rssXmlDoc.InnerXml;

	//XmlNodeList rssNodes = rssXmlDoc.SelectNodes("rss/channel/item");
	//StringBuilder rssContent = new StringBuilder();

	return this.Content(str_RssData, "text/xml");
}

 

반응형
[HttpGet]
public ActionResult GetCargoInfo(RtnFilesInfo value)
{
string str_crkyCn = value.crkyCn;
string str_cargMtNo = value.cargMtNo;
string str_mblNo = value.mblNo;
string str_hblNo = value.hblNo;
string str_blYy = value.blYy;

//화물관리번호 , BL 사용해서 했는지 확인 여부 필요.

	try
	{
		string url = "https://unipass.customs.go.kr:38010/ext/rest/cargCsclPrgsInfoQry/retrieveCargCsclPrgsInfo?crkyCn=i220k129u161i054w030p040s2&cargMtNo=00ANLU083N59007001";
		//uri = new Uri(url); // string 을 Uri 로 형변환
		string responseText = string.Empty;

		HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
		request.Method = "GET";

		using (HttpWebResponse resp = (HttpWebResponse)request.GetResponse())
		{
			HttpStatusCode status = resp.StatusCode;
			Console.WriteLine(status);  // 정상이면 "OK"


			Stream respStream = resp.GetResponseStream();
			using (StreamReader sr = new StreamReader(respStream))
			{
				responseText = sr.ReadToEnd();
				Console.WriteLine(responseText);
			}
		}
	}
	catch(Exception ex)
	{
		Console.WriteLine(ex.Message);
	}

	string sURL;
	sURL = "https://unipass.customs.go.kr:38010/ext/rest/cargCsclPrgsInfoQry/retrieveCargCsclPrgsInfo?crkyCn=i220k129u161i054w030p040s2&cargMtNo=00ANLU083N59007001";

	WebRequest wrGETURL;
	wrGETURL = WebRequest.Create(sURL);
	WebProxy myProxy = new WebProxy("myproxy", 80);

	myProxy.BypassProxyOnLocal = true;

	wrGETURL.Proxy = WebProxy.GetDefaultProxy();

	Stream objStream;
	objStream = wrGETURL.GetResponse().GetResponseStream();

	StreamReader objReader = new StreamReader(objStream);

	string sLine = "";
	int i = 0;
	string ReadingText = "";
	while (sLine != null)
	{
		i++;
		sLine = objReader.ReadLine();
		ReadingText += sLine;
		//if (sLine != null)
		//    Console.WriteLine("{0}:{1}", i, sLine);
	}
	//MessageBox.Show(ReadingText);
	//Console.WriteLine(ReadingText);
				//Console.ReadLine();
	System.Diagnostics.Debug.WriteLine(ReadingText);

	return this.Content(ReadingText, "text/xml");
}
반응형

[2021.04.23]
※XML 데이터를 받아오면 데이터를 파싱해서 가져와야 합니다.
<부모이름>
<자식></자식>
<자식></자식>
<자식></자식>
</부모이름>

이런식의 XML이 있을 경우 부모 이름을 먼저 가져온 다음 반복문으로 나머지 자식 데이터를 가져와야 합니다.

EX)

function fnXmlParsing(vXML){

	//AUMEL
	console.log($(vXML).find('XML부모이름').text());

	//alert($(vXML).find('동일한 부모 이름').length);
	//여러개
	$(vXML).find('동일한 부모 이름').each(function(){ // Jquery 반복문인 each를 사용 하였습니다.
		console.log($(this).find("xml 자식 이름").text());
		console.log($(this).find("xml 자식 이름").text());
		console.log($(this).find("xml 자식 이름").text());
		console.log($(this).find("xml 자식 이름").text());
		console.log($(this).find("xml 자식 이름").text());
		console.log($(this).find("xml 자식 이름").text());
		console.log($(this).find("xml 자식 이름").text());
		console.log($(this).find("xml 자식 이름").text());
		console.log($(this).find("xml 자식 이름").text());
		console.log($(this).find("xml 자식 이름").text());
		console.log($(this).find("xml 자식 이름").text());
		console.log($(this).find("xml 자식 이름").text());
	});
}
반응형

[2020.04.23]
저는 유니패스에서 관세청 정보를 가져와서 사용하기 위해서 API를 확인하는 도중
유니패스 관세청 정보는 URL을 보내 XML로 데이터를 받는 방법으로 주기 때문에 XML을 텍스트로 가공하여 웹에 뿌려주는 로직을 만들기 위해서
아래와 같은 방법으로 C#에 코딩하여 사용 하였었습니다.

URL을 던져서 데이터를 받아와 XML를 한줄로 만드는 로직 입니다.

 

string sURL;
sURL = ""; //XML을 가져올 URL을 적어줍니다.
 
WebRequest wrGETURL;
wrGETURL = WebRequest.Create(sURL);

WebProxy myProxy = new WebProxy("myproxy", 80); //프록시 세팅
myProxy.BypassProxyOnLocal = true;
wrGETURL.Proxy = WebProxy.GetDefaultProxy();

Stream objStream;
objStream = wrGETURL.GetResponse().GetResponseStream();
StreamReader objReader = new StreamReader(objStream); //XML 데이터 가져오기

//XML 데이터 가져와서 string 한줄로 정리하는 로직
string sLine = "";
int i = 0;
string ReadingText = "";
while (sLine != null)
{
	i++;
	sLine = objReader.ReadLine();
	ReadingText += sLine;	
}

//제대로 XML이 생성 됐는지 확인 하는 명령어
System.Diagnostics.Debug.WriteLine(ReadingText);

return this.Content(ReadingText, "text/xml");

+ Recent posts