【问题标题】:how to take value from xml file in .net c#如何从.net c#中的xml文件中获取价值
【发布时间】:2017-12-23 20:05:23
【问题描述】:

我有一个 xml 文件,我想使用 linq 获取内部文本。Xml 如下所示

<?xml version="1.0" encoding="utf-8" ?>
<testObject class="LN" version="16A" distName="CEL-1" id="456" xmlns="kaml20.xsd">
  <p name="rcc">424</p>
  <p name="kcc">02</p>
  <p name="testname">testobject</p>
</testObject>

我做了以下代码没有结果

private static string GetvalueNokia(XElement pin, string val)
{
    string fname="";
    try
    {
        //string location = pin.Descendants("cellName").Single().Value;

        //return pin
        //.Descendants("p")
        //.FirstOrDefault(x => x.Attributes().Any(a => a.Value.ToUpper() == val.ToUpper())).Value;
        ////.Attribute("value").Value;

        var data = from atts in pin.Elements("name")
                   select new
                   {
                       cell= (string)atts.Element("name")
                   };
     }
}

编辑 我的别针如下所示

<testObject class="LN" version="16A" distName="CEL-1" id="456" xmlns="kaml20.xsd">
  <p name="cellName">testname</p>
  <p name="rcc">424</p>
  <p name="kcc">02</p>
</testObject>

【问题讨论】:

    标签: c# linq linq-to-xml


    【解决方案1】:

    您似乎想获取在name属性中具有特定值的xml节点的内部文本,如果正确,您可以尝试以下代码:

    var data = (from node in pin.Descendants("name")
                where node.Attribute("name") !=null &&  node.Attribute("name").Value == value
               select new
               {
                  AttributeValue = node.Attribute("name").Value,
                  InnerText = node.Value
               });
    

    我们需要首先过滤具有name 属性的节点,并结合它包含作为输入提供的值。

    如果你想对xml节点属性中的输入参数进行不区分大小写的比较,那么你可以使用String.Compare like:

    String.Equals(node.Attribute("name").Value, value,StringComparison.OrdinalIgnoreCase) 
    

    如果pin 是您尝试从中获取name 属性值的元素,那么只需调用Attribute 方法,并将属性名称作为输入并访问Value 属性,如下所示:

    private static string GetvalueNokia(XElement pin, string val)
    { 
      return pin.Attribute("name")?.Value;
    }
    

    希望对你有帮助!

    【讨论】:

    • 谢谢,我会尽力让你知道结果
    猜你喜欢
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多