从XML文件中查找内部文本值

时间:2012-10-30 11:36:54

标签: c#

当我编写此代码时,我只获得父标记值。我也希望得到他们的childnodes值,请告诉我这个。

XmlDocument DOC = new XmlDocument();
DOC.RemoveAll();
DOC.Load("C:\\Users\\DIGITEL EYE SYSTEM\\Desktop\\response.xml");

foreach (XmlNode AllNodes in ParentNode)
{
    Project.Name = AllNodes["Name"].InnerText;
    if (AllNodes.ChildNodes == DOC.GetElementsByTagName("AppBuilderForms"))
    {
        //  Project.Forms = DOC.GetElementsByTagName("");
        // String sb = AllNodes["Forms"].InnerText;
    }
    else if (AllNodes.ChildNodes==DOC.GetElementsByTagName("CheckMarkObject"))
    {
        checkmark.Name = AllNodes["Name"].InnerText;
        checkmark.Label = AllNodes["Label"].InnerText;
        // checkmark.IsChecked = AllNodes["IsChecked"].InnerText;
    }
    else if (ParentNode == DOC.GetElementsByTagName("DateTimeObject"))
    {
        DateTime.Name = AllNodes["Name"].InnerText;
        DateTime.Label = AllNodes["Label"].InnerText;
    }
    else if (ParentNode == DOC.GetElementsByTagName("LocationObject"))
    {
        Location.Name = AllNodes["Name"].InnerText;
        Location.Label = AllNodes["Label"].InnerText;
        Location.Longitude = AllNodes["Longitude"].InnerText;
        Location.Latitude = AllNodes["Latitude"].InnerText;
    }
    else if (ParentNode==DOC.GetElementsByTagName("SwitchObject"))
    {
        Switch.Name = AllNodes["Name"].InnerText;
        Switch.Label = AllNodes["Label"].InnerText;
        // Switch.IsChecked =AllNodes["IsChecked"].InnerText;
    }
    else if(ParentNode==DOC.GetElementsByTagName("TextViewObject")) 
    {
        TextView.Name = AllNodes["Name"].InnerText;
        TextView.Value = AllNodes["Value"].InnerText;
    }
    else if (ParentNode ==DOC.GetElementsByTagName("TextFieldObject"))
    {
        TextField.Name = AllNodes["Name"].InnerText;
        TextField.Value = AllNodes["Value"].InnerText;
    }
    else if (ParentNode == DOC.GetElementsByTagName("PhotoPickerObject"))
    {
        PhotoPicker.Name = AllNodes["Name"].InnerText;
        PhotoPicker.Label = AllNodes["Label"].InnerText;
    }
    else if (ParentNode == DOC.GetElementsByTagName("SpinWheelPickerObject"))
    {
        SpinWheelPicker.Name = AllNodes["Name"].InnerText;
        SpinWheelPicker.Label = AllNodes["Label"].InnerText;
        // SpinWheelPicker.Columns = AllNodes["Columns"].InnerText;
    }
}

1 个答案:

答案 0 :(得分:1)

var xdoc = XDocument.Load(@"C:\Users\DIGITEL EYE SYSTEM\Desktop\response.xml");
    var allElements = xdoc.Root.Elements();
    foreach (string element in allElements)
    {
        //TODO add logic
    }

首先,我们将xml加载到XDocument(需要.Net 3.5),
    这里没什么奇怪的。

其次,我们将选择根节点和ALL     根目录下的元素变成IEnumrable。您可以在Elements()方法中添加过滤器。

第三,我们将开始迭代IEnumerable中的元素并隐式         将它们转换为字符串,这是LINQ to XML lib中的运算符         只返回XElement.Value(所以如果你认为那更多         可读或需要整个元素的其他原因写         那!所有元素中的I.E XElement元素

不知道如何在XmlDocument中做到这一点,我完全忘记了,希望这可以帮助你,以防你走上这条道路(双关语)。