C# 如何从XML文件导入/读取数据?
如何在C中访问XML文件? 如何计算该xml文件中的节点数? 我应该如何访问xml文件中的每个节点 我有两个xml文件,其中一个是dev.xml,其中包含以下代码C# 如何从XML文件导入/读取数据?,c#,xml,data-import,C#,Xml,Data Import,如何在C中访问XML文件? 如何计算该xml文件中的节点数? 我应该如何访问xml文件中的每个节点 我有两个xml文件,其中一个是dev.xml,其中包含以下代码 <Devanagri_to_itrans> <mapping> <character>अ</character> <itrans>a</itrans> </mapping> ... </Devanagri_to_itr
<Devanagri_to_itrans>
<mapping>
<character>अ</character>
<itrans>a</itrans>
</mapping>
...
</Devanagri_to_itrans>
第二个文件是结构非常相似的guj.xml
<Gujrathi_to_itrans>
<mapping>
<character>અ</character>
<itrans>a</itrans>
<mapping>
...
</Gujrathi_to_itrans>
我需要将其转换为字符映射的二维数组。试试这个关于Linq到XML的教程-
如果您正在使用.net 3.5或更高版本,通过设置对System.XML.LINQ的引用来使用LINQ to XML,这个问题还提供了一些有趣的代码。 下面是控制台应用程序窗口中给定xml文件中元素的简单计数:
string xml = @"<xml><a/><a/><a/></xml>";
XDocument doc = XDocument.Parse(xml);
Console.WriteLine((from a in doc.Descendants("a")
select a).Count());
既然您添加了更多的细节,我现在可以提供更好的答案。 这里是一个功能性的xml解析和加入控制台应用程序,它演示了我认为您正在寻找的内容。要解析xml文件而不是xml字符串,请使用XDocument加载方法而不是显示的解析方法。祝你好运
XDocument docA = XDocument.Parse(
@"<Devanagri_to_itrans>
<mapping>
<character>अ</character>
<itrans>a</itrans>
</mapping>
</Devanagri_to_itrans>");
XDocument docB = XDocument.Parse(
@"<Gujrathi_to_itrans>
<mapping>
<character>અ</character>
<itrans>a</itrans>
</mapping>
</Gujrathi_to_itrans>");
var devanagriKeys = (from d in docA.Descendants("mapping")
select new {
Key = d.Descendants("itrans").FirstOrDefault().Value,
Character = d.Descendants("character").FirstOrDefault().Value
}).ToArray();
var gujrathiKeys = (from g in docB.Descendants("mapping")
select new {
Key = g.Descendants("itrans").FirstOrDefault().Value,
Character = g.Descendants("character").FirstOrDefault().Value
}).ToArray();
var crossReference = (from d in devanagriKeys
join g in gujrathiKeys on d.Key equals g.Key
select new {
d.Key,
Devanagri = d.Character,
Gujrathi = g.Character
}).ToList();
Console.WriteLine("Enter a key character to translate:");
string searchKey = Console.ReadLine();
var translation = crossReference.Where(cr => cr.Key == searchKey).FirstOrDefault();
if (translation == null)
Console.WriteLine("No such key in the cross reference.");
else
Console.WriteLine("{0} is {1} in Devanagri and {2} in Gujrathi",
translation.Key, translation.Devanagri, translation.Gujrathi);
Console.ReadKey(true);
…然后,在其他时间点,您可以这样做,将会话对象列表放入变量中。请注意,假设变量可能为null,这将在会话超时时发生
List<CrossReferenceTranslation>() crossReference = Session["CrossReference"] ??
new List<CrossReferenceTranslation>();
我不想显示计数,我想通过将它存储在一个变量中来进一步使用它。我该怎么做呢?谢谢用var c替换Console.WriteLine=我的xml文件在visual studio中,但我不希望整个代码存储在字符串xml中,我只想读取节点并存储它!!谢谢你的代码。。。请帮我再做一件事。。。如何将此列表存储在会话变量中???所以我可以在将来轻松访问它frm othr asp文件。。。假设TEMP是一个数组。将数组放入会话:会话[array]=TEMP;并在另一个页面中检索数组:ArrayList temp=System.Collections.ArrayListSession[array];首先,使用列表而不是ArrayList。自.NET2.0以来,由于装箱,ArrayList一直处于劣势。我添加了将翻译器放到会话变量中的代码,但是您确实应该考虑比会话[]更持久和可扩展的解决方案。
List<CrossReferenceTranslation>() crossReference = Session["CrossReference"] ??
new List<CrossReferenceTranslation>();