Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中查找和获取带有特定atribute的XML行#_C#_Xml_Linq_Attributes - Fatal编程技术网

C# 在C中查找和获取带有特定atribute的XML行#

C# 在C中查找和获取带有特定atribute的XML行#,c#,xml,linq,attributes,C#,Xml,Linq,Attributes,我无法从包含以下内容的XML中获取字符串: <label lang= 我假设您想让每个项目都包含您的“结果”标记,并检查它是否有一个名为lang的属性。如果有,请打印整个内容(例如拒绝) 我会这样处理这个问题。如果节点不包含该属性,它将抛出一个错误,我使用try和catch 如果您需要进一步的帮助或解释,请留下评论 XmlNode有几种很好的方法来获取项目的文本,例如InnerText、InnerXml或OuterXml,下面是一个示例: var text = @"<refu

我无法从包含以下内容的XML中获取字符串:

<label lang=

我假设您想让每个项目都包含您的“结果”标记,并检查它是否有一个名为lang的属性。如果有,请打印整个内容(例如
拒绝

我会这样处理这个问题。如果节点不包含该属性,它将抛出一个错误,我使用
try
catch

如果您需要进一步的帮助或解释,请留下评论

XmlNode有几种很好的方法来获取项目的文本,例如
InnerText
InnerXml
OuterXml

,下面是一个示例:

   var text = @"<refusal>
        <label lang=""EN"">Refused</label>
        <desc lang=""EN"" />
    </refusal>";
   var xdoc = XDocument.Parse(text);
   var elements = xdoc.Root.Elements()
       .Where(x => x.Name.LocalName == "label" && x.Attributes().Any(a => a.Name.LocalName == "lang" && a.Value == "EN"));
   Console.WriteLine(elements.First().ToString()); // Output: <label lang="EN">Refused</label>
var text=@”
拒绝
";
var xdoc=XDocument.Parse(文本);
var elements=xdoc.Root.elements()
。其中(x=>x.Name.LocalName==“label”&&x.Attributes()。任意(a=>a.Name.LocalName==“lang”&&a.Value==“EN”);
Console.WriteLine(elements.First().ToString());//输出:拒绝

请注意,它没有检查元素名称空间(我不确定您是否需要),因此也将包括“”之类的元素。

因此您希望
拒绝
?@dominosam请在使用Linq to XML的位置添加代码!
<refusal>
    <label lang="EN">Refused</label>
    <desc lang="EN" />
</refusal>
XmlNodeList aNode = xdoc.GetElementsByTagName("result");
XmlNodeList bNode = aNode[0].ChildNodes;

foreach (XmlNode item in bNode)
{
    try
    {
        string s = item.Attributes["lang"].OuterXml;
    }
    catch
    {
        //the item doesn't have the attribute lang
    }
}
   var text = @"<refusal>
        <label lang=""EN"">Refused</label>
        <desc lang=""EN"" />
    </refusal>";
   var xdoc = XDocument.Parse(text);
   var elements = xdoc.Root.Elements()
       .Where(x => x.Name.LocalName == "label" && x.Attributes().Any(a => a.Name.LocalName == "lang" && a.Value == "EN"));
   Console.WriteLine(elements.First().ToString()); // Output: <label lang="EN">Refused</label>