C# 读取xml属性

C# 读取xml属性,c#,xml,linq,linq-to-xml,C#,Xml,Linq,Linq To Xml,我很困惑。。。我心里再也没有什么东西了。。。我需要从这种xmldocument <party_list> <party currency="BAM" id="330-159210014235851" /> <party currency="EUR" id="330-153990008540078" /> </party_list> XmlNodeList elemList=doc.GetElementsByTagName(…); fo

我很困惑。。。我心里再也没有什么东西了。。。我需要从这种
xmldocument

<party_list>
   <party currency="BAM" id="330-159210014235851" />
   <party currency="EUR" id="330-153990008540078" />
</party_list>
XmlNodeList elemList=doc.GetElementsByTagName(…);
for(int i=0;i
尝试上述代码。

更换

MessageBox.Show(element.Element("party").Value);

因为您的元素已经是
元素


完整代码:

XDocument doc = XDocument.Load(@"e:\input\partylist.xml");
foreach (var party in doc.Descendants("party"))
   foreach (var attr in party.Attributes())
        MessageBox.Show(attr.ToString());
此代码使用
XAttribute
的重写
ToString()
方法,该方法返回属性名称及其值,如下所示:

currency="BAM"
如果需要,您只能使用value:
MessageBox.Show(attr.value)

你能试试这个吗

XDocument doc = XDocument.Load(@"e:\input\partylist.xml");
foreach (var partyList in doc.Descendants("party"))
{
   string currency= partyList .Attribute("currency").Value;
   string id= partyList .Attribute("id").Value;
}
输入xml文件

<?xml version='1.0' encoding='utf-16'?>
<party_list>
  <party currency='BAM' id='330-159210014235851' />
  <party currency='EUR' id='330-153990008540078' />
</party_list>
string body=@”
";
XmlDocument bodyDoc=新的XmlDocument();
bodyDoc.LoadXml(body);
XmlNodeList xnList=bodyDoc.SelectNodes(“/party\u list/party”);
foreach(xnList中的XmlNode项)
{
var id=项.属性[“id”].值;
var currency=项目属性[“currency”].值;
}
另一个选项:

XElement xml = 
  XElement.Parse (@"<party_list>
                      <party currency='BAM' id='330-159210014235851' /> 
                      <party currency='EUR' id='330-153990008540078' />
                    </party_list>");

xml.Elements()
     .SelectMany(element => element.Attributes().Select(attrib => attrib.Value))
       .ToList()
         .ForEach(text => MessageBox.Show(text));
XElement xml=
XElement.Parse(@)
");
xml.Elements()
.SelectMany(element=>element.Attributes().Select(attrib=>attrib.Value))
托利斯先生()
.ForEach(text=>MessageBox.Show(text));
试试这个

XDocument doc = XDpcument.Load("your xml location");

var parties = from p in doc.Descendants("party")
              select new 
              { 
                      currency = p.Attribute("currency").Value;
                      Id =       p. Attribute("id").Value;
              }

请注意,
NullReferenceException
可能位于
属性(“货币”).Value
。我也访问了
Value
属性,直到看到lazyberezovsky用cast to
string
给出的答案。抛出异常可能是一种理想的行为,但通常不是这样,因为
xml
通常来自外部源。doc.substands(“party_list”)应该是doc.substands(“party”)您是否在其中添加了适当的标记名?您好,请尝试解决方案现在正在运行……可能会对您有所帮助。。
<?xml version='1.0' encoding='utf-16'?>
<party_list>
  <party currency='BAM' id='330-159210014235851' />
  <party currency='EUR' id='330-153990008540078' />
</party_list>
        XDocument doc = XDocument.Load(@"e:\input\partylist.xml");
        var eles = doc.Element("party_list").Elements("party");

        foreach (XElement ele in eles)
        {
            Console.WriteLine (ele.Attribute("currency").Value);
            Console.WriteLine(ele.Attribute("id").Value);

        }
        Console.ReadLine();
string body = @"<?xml version='1.0' encoding='utf-16'?><party_list>
                    <party currency='BAM' id='330-159210014235851' />
                    <party currency='EUR' id='330-153990008540078' />
                </party_list>";
XmlDocument bodyDoc = new XmlDocument();
bodyDoc.LoadXml(body);
XmlNodeList xnList = bodyDoc.SelectNodes("/party_list/party");
foreach (XmlNode item in xnList)
{
    var id =  item.Attributes["id"].Value;
    var currency = item.Attributes["currency"].Value;
}
XElement xml = 
  XElement.Parse (@"<party_list>
                      <party currency='BAM' id='330-159210014235851' /> 
                      <party currency='EUR' id='330-153990008540078' />
                    </party_list>");

xml.Elements()
     .SelectMany(element => element.Attributes().Select(attrib => attrib.Value))
       .ToList()
         .ForEach(text => MessageBox.Show(text));
XDocument doc = XDpcument.Load("your xml location");

var parties = from p in doc.Descendants("party")
              select new 
              { 
                      currency = p.Attribute("currency").Value;
                      Id =       p. Attribute("id").Value;
              }