<R>
<tests>
<test language="en"> hello </test>
<test language="it"> ciao </test>
<test language="hu"> szia </test>
<test language="es"> ola </test>
</tests>
</R>
XML的上述部分包含在(XML)文件中。我确实希望foreach test xml元素读取并获取XML值。
我试过这样的事情:
XDocument xdoc = XDocument.Load(theXmlURLpath);
foreach (var iDescription in xdoc.XPathSelectElements("R/tests"))
{
string lang = iDescription.Attribute("language").Value; // en / it / hu / es
string text= iDescription.Value; // hello or ciao ...
switch(iLang)
{
case "en":
// do something
break;
case "it":
// do something
break;
case "hu":
// do something
break;
case "es":
// do something
break;
}
}
答案 0 :(得分:3)
您的XPath不会选择<test/>
元素,而是选择<tests/>
父元素。
尝试
xdoc.XPathSelectElements("R/tests/test")
答案 1 :(得分:0)
不要将xml(XmlDocument)直接与xml linq(XDocument)混合。试试这个
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication29
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XDocument xdoc = XDocument.Load(FILENAME);
foreach (var iDescription in xdoc.Descendants("test"))
{
string lang = (string)iDescription.Attribute("language"); // en / it / hu / es
string text= (string)iDescription; // hello or ciao ...
switch(lang)
{
case "en":
// do something
break;
case "it":
// do something
break;
case "hu":
// do something
break;
case "es":
// do something
break;
}
}
}
}
}
答案 2 :(得分:0)
{{1}}