Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.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# 如果我有子节点的属性名,如何获取parentnode属性名?_C#_Asp.net_Xml_Datatable_Nodes - Fatal编程技术网

C# 如果我有子节点的属性名,如何获取parentnode属性名?

C# 如果我有子节点的属性名,如何获取parentnode属性名?,c#,asp.net,xml,datatable,nodes,C#,Asp.net,Xml,Datatable,Nodes,嗨,我想从xml获取up节点。例如,这里有一个xml结构 <feature name="mod1"> <user name="user1"></user> <user name="user2"></user> <user name="user3"></user> </feature> 你应该能把它弄到手 user.Parent.Attribute("NAME").Value; 这适用于

嗨,我想从xml获取up节点。例如,这里有一个xml结构

<feature name="mod1">
  <user name="user1"></user>
  <user name="user2"></user>
  <user name="user3"></user>
</feature>

你应该能把它弄到手

user.Parent.Attribute("NAME").Value;
这适用于:

<LM-X STAT_VERSION="3.32">
<LICENSE_PATH >
<FEATURE NAME="GlobalZoneEU" >
<USER NAME="SYSTEM" HOST="LRV171" IP="172.16.11.115" USED_LICENSES="2000" LOGIN_TIME="2013-04-17 12:42" CHECKOUT_TIME="2013-04-17 12:42" SHARE_CUSTOM="hweuser:172.16.11.115"/>
<USER NAME="pbsadmin" HOST="SERV11" IP="172.16.11.115" USED_LICENSES="720" LOGIN_TIME="2013-04-17 12:44" CHECKOUT_TIME="2013-04-17 12:44" SHARE_CUSTOM="pbsadmin:LWSERV171:1592_40960072_1356792762_826820"/>
</FEATURE>
</LICENSE_PATH>
</LM-X>

编辑

按用户名获取功能名称:

var featureNames = xDoc.Descendants("USER")
                        .Where(x => x.Attribute("NAME").Value == <your input>)
                        .Select(x => x.Parent.Attribute("NAME").Value);

var firstFeatureName = featureNames.FirstOrDefault();
var-featureNames=xDoc.substands(“用户”)
.Where(x=>x.Attribute(“NAME”).Value==)
.Select(x=>x.Parent.Attribute(“NAME”).Value);
var firstFeatureName=featureNames.FirstOrDefault();

您应该可以在

user.Parent.Attribute("NAME").Value;
这适用于:

<LM-X STAT_VERSION="3.32">
<LICENSE_PATH >
<FEATURE NAME="GlobalZoneEU" >
<USER NAME="SYSTEM" HOST="LRV171" IP="172.16.11.115" USED_LICENSES="2000" LOGIN_TIME="2013-04-17 12:42" CHECKOUT_TIME="2013-04-17 12:42" SHARE_CUSTOM="hweuser:172.16.11.115"/>
<USER NAME="pbsadmin" HOST="SERV11" IP="172.16.11.115" USED_LICENSES="720" LOGIN_TIME="2013-04-17 12:44" CHECKOUT_TIME="2013-04-17 12:44" SHARE_CUSTOM="pbsadmin:LWSERV171:1592_40960072_1356792762_826820"/>
</FEATURE>
</LICENSE_PATH>
</LM-X>

编辑

按用户名获取功能名称:

var featureNames = xDoc.Descendants("USER")
                        .Where(x => x.Attribute("NAME").Value == <your input>)
                        .Select(x => x.Parent.Attribute("NAME").Value);

var firstFeatureName = featureNames.FirstOrDefault();
var-featureNames=xDoc.substands(“用户”)
.Where(x=>x.Attribute(“NAME”).Value==)
.Select(x=>x.Parent.Attribute(“NAME”).Value);
var firstFeatureName=featureNames.FirstOrDefault();

属性似乎区分大小写

XmlReader reader = XmlReader.Create(\\File Path);

        XElement doc = XElement.Load(reader);

        int counter = 0;
        foreach (XElement user in doc.Descendants("USER"))
        {
            try
            {
                string node = user.Parent.Attribute("NAME").Value; //Working - Returning 'GlobalZoneEU'
            }
            catch (Exception)
            {

            }
        }

属性似乎区分大小写

XmlReader reader = XmlReader.Create(\\File Path);

        XElement doc = XElement.Load(reader);

        int counter = 0;
        foreach (XElement user in doc.Descendants("USER"))
        {
            try
            {
                string node = user.Parent.Attribute("NAME").Value; //Working - Returning 'GlobalZoneEU'
            }
            catch (Exception)
            {

            }
        }

下面的代码应该适合您

        string xml = "<feature name=\"mod1\">";
        xml += "<user name=\"user1\"> </user>";
        xml += "<user name=\"user2\"> </user> ";
        xml += "<user name=\"user3\"></user>";
        xml += "</feature>";

        XmlDocument xdoc=new XmlDocument();
        xdoc.LoadXml(xml);

        XDocument mydoc = XDocument.Parse(xdoc.OuterXml);

        var result = mydoc.Elements("feature").Where(parent =>
                          parent.Elements("user").Any(child =>   
                          child.Attribute("name").Value == "user2"));
stringxml=”“;
xml+=“”;
xml+=“”;
xml+=“”;
xml+=“”;
XmlDocument xdoc=新的XmlDocument();
LoadXml(xml);
XDocument mydoc=XDocument.Parse(xdoc.OuterXml);
var result=mydoc.Elements(“功能”)。其中(父项=>
父元素(“用户”).Any(子元素=>
child.Attribute(“name”).Value==“user2”);
别忘了包括 使用System.Xml;
使用System.Xml.Linq

以下代码应该适合您

        string xml = "<feature name=\"mod1\">";
        xml += "<user name=\"user1\"> </user>";
        xml += "<user name=\"user2\"> </user> ";
        xml += "<user name=\"user3\"></user>";
        xml += "</feature>";

        XmlDocument xdoc=new XmlDocument();
        xdoc.LoadXml(xml);

        XDocument mydoc = XDocument.Parse(xdoc.OuterXml);

        var result = mydoc.Elements("feature").Where(parent =>
                          parent.Elements("user").Any(child =>   
                          child.Attribute("name").Value == "user2"));
stringxml=”“;
xml+=“”;
xml+=“”;
xml+=“”;
xml+=“”;
XmlDocument xdoc=新的XmlDocument();
LoadXml(xml);
XDocument mydoc=XDocument.Parse(xdoc.OuterXml);
var result=mydoc.Elements(“功能”)。其中(父项=>
父元素(“用户”).Any(子元素=>
child.Attribute(“name”).Value==“user2”);
别忘了包括 使用System.Xml;

使用System.Xml.Linq

对象引用未设置为对象实例:(@Tarasov.sample xml与您的代码不对应(如果我用您的xml尝试您的代码,会出现许多Null Ref异常)。请提供一个真实的示例,或检查属性大小写(可能是“NAME”)@Tarasov:请使用结束标记。您确定
行[“Modul”]
存在吗?对象引用未设置为对象实例:(@Tarasov.sample xml与您的代码不对应(如果我使用xml尝试您的代码,则会出现许多空引用异常)。请提供一个真实的示例,或检查属性大小写(可能是“名称”)@Tarasov:请使用结束标记。您确定
行[“Modul”]
存在?请为整个xml提供结束标记。@Tarasov每个用户标记后的
是什么?顺便问一下,我的答案(大写:
USER.Parent.Attribute(“NAME”).Value
)非常适合您的示例…我不知道,但我从其他程序获得的xml…因此我必须使用它们:/i使用此xml获得所有用户和功能,但如果我有用户名,我不知道如何获得功能名称:D:(请为整个xml提供结束标记。@Tarasov每个用户标记后的
是什么?顺便问一下,我的答案(大写:
USER.Parent.Attribute(“NAME”).Value
)非常适合您的示例…我不知道,但我从其他程序获得的xml…因此我必须使用它们:/i使用此xml获得所有用户和功能,但如果我有用户名,我不知道如何获得功能名称:D:(mhh不是xml的pth,我使用我在应用程序中创建的xml字符串,但内容是相同的。我不明白为什么它由您而不是由我工作:D您的示例是正确的,但它不工作:/错误是什么?这行代码
user.Parent.Attribute(“NAME”)是什么.Value;
返回?您能提供xml字符串吗?好的,但与user.Parent.Parent.Attribute(“NAME”)一起使用.Value;:D:Dmhh不是xml的pth我使用我在应用程序中创建的xml字符串,但内容是相同的。我不明白为什么它由您而不是由我工作:D您的示例是正确的,但它不工作:/D错误是什么?这行代码是什么
user.Parent.Attribute(“NAME”).Value;
返回?您能提供xml字符串吗?好的,但与user.Parent.Parent.Attribute(“NAME”).Value;:D:D一起工作