在xml中按标记名称查找值

时间:2010-06-03 12:38:50

标签: .net xml c#-2.0

如何在xml文件中按标签名称查找值?使用C#.net 2.0

我的xmldocument中只有10个不同的节点。

我不想写xpath。我认为有一个自动查找属性。

5 个答案:

答案 0 :(得分:0)

无法记住确切的语法,但写了一个Xpath查询,然后使用XPathNavigator.Select来查找它。

编辑:请记住,我认为它类似//@tagname,所以如果你XPathNavigator.Select("//@tagname"),我认为它会起作用。假设使用标记表示属性,如果您正在查找元素,则它应该只是//tagname

答案 1 :(得分:0)

请参阅此完整函数获取节点值以及xml文件中的属性值...

public string GetXmlNodeValue(string xmlfilePath, string TagName, string Attribute)
{
    XmlDocument objXML = new XmlDocument();
    bool IsNodeValuefound = false;
    string Value = string.Empty;
    try
    {
        if (File.Exists(xmlfilePath))
        {
            objXML.Load(xmlfilePath);

            XmlNode xNode = objXML.DocumentElement.FirstChild;
            while (xNode != null)
            {
                if (string.Compare(xNode.Name, TagName, true) == 0)
                {
                    if (!string.IsNullOrEmpty(Attribute))
                    {
                        if (xNode.Attributes.GetNamedItem(Attribute) != null)
                        {
                            IsNodeValuefound = true;
                            Value = xNode.Attributes.GetNamedItem(Attribute).Value;
                        }
                    }
                    else
                    {
                        IsNodeValuefound = true;
                        Value = xNode.InnerText.Trim();
                    }
                }
                xNode = xNode.NextSibling;
            }
        }
        if (IsNodeValuefound)
            return Value;
        else
            return string.Empty;
    }
    catch (XmlException xmlEx)
    {
        throw xmlEx;
    }
    catch (Exception ex)
    {
        throw ex;
    }
    finally
    {
        objXML = null;
    }
}     

答案 2 :(得分:0)

简单示例:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(someRawData);
XmlNodeList yourNodes = xmlDoc.GetElementsByTagName("YourTagName");

然后你可以迭代你的节点并获取值。

答案 3 :(得分:0)

我用这个scneirao解决了我的问题:

XmlNodeList nl = xdoc.GetElementsByTagName(“CustomerID”); sb.Append(NL [0] .InnerXml);

答案 4 :(得分:0)

首先,通过这段代码获取XmlDocument:

XmlDocument infodoc = new XmlDocument();
infodoc.LoadXml(xmlString);

如果您的标签如下所示:

<directory value="D:/BACKUPS"></directory>

通过以下方式获取“目录”标签的值:

var directory = infodoc.GetElementsByTagName("directory")[0].Attributes["value"].Value;

如果您的标签如下所示:

<directory>D:/BACKUPS</directory>

通过以下方式获取“目录”标签的值:

var directory = infodoc.GetElementsByTagName("directory")[0].InnerXml;