উত্তর:
XML ডকুমেন্ট স্ট্রিং থেকে বা ফাইল থেকে একটি এক্সএমএল পড়তে read
XmlDocument doc = new XmlDocument();
doc.Load("c:\\temp.xml");
অথবা
doc.LoadXml("<xml>something</xml>");
তারপরে নীচের নোডটি সন্ধান করুন যেমন এর মতো
XmlNode node = doc.DocumentElement.SelectSingleNode("/book/title");
অথবা
foreach(XmlNode node in doc.DocumentElement.ChildNodes){
string text = node.InnerText; //or loop through its children as well
}
তারপরে সেই নোডের ভিতরে লেখাটি পড়ুন
string text = node.InnerText;
বা একটি গুণাবলী পড়ুন
string attr = node.Attributes["theattributename"]?.InnerText
সর্বদা ["কিছু"] বৈশিষ্ট্যগুলিতে নালীর জন্য যাচাই করুন কারণ বৈশিষ্ট্যটি বিদ্যমান না থাকলে এটি নাল হবে।
XmlNode node = XmlDocument.Docu...
লাইনটি আসলেই হওয়া উচিত নয় XmlNode = doc.Docu...
? কেন উত্তর পরিবর্তন এবং doc.
সরানো হয়েছে?
// Loading from a file, you can also load from a stream
var xml = XDocument.Load(@"C:\contacts.xml");
// Query the data and write out a subset of contacts
var query = from c in xml.Root.Descendants("contact")
where (int)c.Attribute("id") < 4
select c.Element("firstName").Value + " " +
c.Element("lastName").Value;
foreach (string name in query)
{
Console.WriteLine("Contact's Full Name: {0}", name);
}
রেফারেন্স : এমএসডিএন- তে এক্সএমএল থেকে লিনিকিউ
এক্সএমএল সাইটম্যাপগুলি পড়ার জন্য আমি এখানে একটি আবেদন লিখেছি:
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Data;
using System.Xml;
namespace SiteMapReader
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Please Enter the Location of the file");
// get the location we want to get the sitemaps from
string dirLoc = Console.ReadLine();
// get all the sitemaps
string[] sitemaps = Directory.GetFiles(dirLoc);
StreamWriter sw = new StreamWriter(Application.StartupPath + @"\locs.txt", true);
// loop through each file
foreach (string sitemap in sitemaps)
{
try
{
// new xdoc instance
XmlDocument xDoc = new XmlDocument();
//load up the xml from the location
xDoc.Load(sitemap);
// cycle through each child noed
foreach (XmlNode node in xDoc.DocumentElement.ChildNodes)
{
// first node is the url ... have to go to nexted loc node
foreach (XmlNode locNode in node)
{
// thereare a couple child nodes here so only take data from node named loc
if (locNode.Name == "loc")
{
// get the content of the loc node
string loc = locNode.InnerText;
// write it to the console so you can see its working
Console.WriteLine(loc + Environment.NewLine);
// write it to the file
sw.Write(loc + Environment.NewLine);
}
}
}
}
catch { }
}
Console.WriteLine("All Done :-)");
Console.ReadLine();
}
static void readSitemap()
{
}
}
}
পেস্ট বিনে কোড http://pastebin.com/yK7cSNeY
প্রচুর উপায় আছে, কিছু:
অপরপক্ষে তুমি:
উদাহরণগুলি দেওয়া এমএসডিএন পৃষ্ঠাগুলিতে রয়েছে
এছাড়াও, ভিবি.এনইটের সি # এর চেয়ে কমপ্লেক্সের মাধ্যমে আরও ভাল এক্সএমএল পার্সিং সমর্থন রয়েছে। আপনার যদি বিকল্প এবং ইচ্ছা থাকে তবে এটি পরীক্ষা করে দেখুন check
এক্সএমএল স্ট্রিংগুলি পড়তে আপনি একটি ডেটাসেট ব্যবহার করতে পারেন।
var xmlString = File.ReadAllText(FILE_PATH);
var stringReader = new StringReader(xmlString);
var dsSet = new DataSet();
dsSet.ReadXml(stringReader);
তথ্যের স্বার্থে এটি পোস্ট করা।
উদাহরণস্বরূপ XMLTextReader শ্রেণীর পরীক্ষা করে দেখুন ।
public void ReadXmlFile()
{
string path = HttpContext.Current.Server.MapPath("~/App_Data"); // Finds the location of App_Data on server.
XmlTextReader reader = new XmlTextReader(System.IO.Path.Combine(path, "XMLFile7.xml")); //Combines the location of App_Data and the file name
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element:
break;
case XmlNodeType.Text:
columnNames.Add(reader.Value);
break;
case XmlNodeType.EndElement:
break;
}
}
}
আপনি প্রথম বিবৃতিটি এড়াতে এবং XMLTextReader এর কনস্ট্রাক্টরে পাথের নামটি নির্দিষ্ট করতে পারেন।
আপনি কোথায় পেতে চান তার উপর নির্ভর করে বিভিন্ন উপায় রয়েছে। এক্সএমএল ডকুমেন্ট এক্সডোকামেন্টের চেয়ে হালকা, তবে আপনি যদি স্ট্রিংয়ে এক্সএমএল অন্ততপক্ষে যাচাই করতে চান তবে নিয়মিত প্রকাশটি সম্ভবত আপনি করা সবচেয়ে দ্রুত এবং হালকা পছন্দ। উদাহরণস্বরূপ, আমি আমার এপিআই-এর জন্য স্পেকফ্লো দিয়ে স্মোক টেস্টগুলি প্রয়োগ করেছি এবং আমি যদি কোনও বৈধ এক্সএমএলে ফলাফলের একটি হয় তবে তা পরীক্ষা করতে চাই - তবে আমি একটি নিয়মিত এক্সপ্রেশন ব্যবহার করব। তবে যদি আমাকে এই এক্সএমএল থেকে মানগুলি বের করার প্রয়োজন হয় তবে আমি দ্রুত এবং কম কোড সহ এটি করার জন্য এটি এক্সডোকামেন্টের সাথে পার্স করব। অথবা আমি যদি একটি বড় এক্সএমএল নিয়ে কাজ করতে হয় তবে আমি এক্সএমএল ডকুমেন্ট ব্যবহার করতাম (এবং কখনও কখনও আমি এক্সএমএলগুলির সাথে প্রায় 1 এম লাইনের কাছাকাছিও কাজ করি); আমি এমনকি এটি লাইন লাইন পড়তে পারে। কেন? ভিজ্যুয়াল স্টুডিওতে প্রাইভেট বাইটে 800MB এরও বেশি খোলার চেষ্টা করুন; এমনকি উত্পাদনে আপনার 2GB এর চেয়ে বড় অবজেক্ট থাকা উচিত নয়। আপনি একটি twerk সঙ্গে করতে পারেন, কিন্তু আপনি করা উচিত নয়। আপনার যদি এমন কোনও দস্তাবেজ পার্স করতে হয়, যার মধ্যে প্রচুর লাইন থাকে, তবে এই নথিগুলি সম্ভবত সিএসভি হবে।
আমি এই মন্তব্যটি লিখেছি, কারণ আমি এক্সডোকামেন্টের সাথে অনেকগুলি উদাহরণ দেখতে পাচ্ছি। এক্স ডকুমেন্ট বড় ডকুমেন্টগুলির জন্য ভাল নয়, বা যখন আপনি কেবল যাচাই করতে চান সেখানে লিখিত সামগ্রীটি এক্সএমএল বৈধ কিনা। আপনি যদি এক্সএমএল নিজেই বুদ্ধিমান হয়ে যায় কিনা তা পরীক্ষা করতে চান তবে আপনার স্কিমা দরকার।
আমি প্রস্তাবিত উত্তরকেও হ্রাস করেছিলাম, কারণ আমার বিশ্বাস এটির নিজের মধ্যে উপরের তথ্যটি প্রয়োজন। কল্পনা করুন যে আমার 200 ঘন্টা এক্সএমএল, 10 ঘন্টা, 10 ঘন্টা বৈধ এক্সএমএল তা যাচাই করা দরকার। এক্সডোকামেন্টটি প্রচুর সংস্থানকে নষ্ট করবে।
প্রসন্ন ভেনকেটেশ আরও জানিয়েছে যে আপনি স্ট্রিংটি কোনও ডেটাসেটে পূরণ করার চেষ্টা করতে পারেন, এটি বৈধ এক্সএমএলকেও নির্দেশ করবে।