0

当我编写这段代码时,我只得到父标签值。我也想获得他们的子节点值,请告诉我。

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;
    }
}
4

1 回答 1

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),
这里没有什么奇怪的。

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

第三,我们将开始迭代 IEnumerable 中的元素并将它们隐式转换为字符串,这是 LINQ to XML 库中的一个运算符,它只返回 XElement.Value(因此,如果您认为这更具可读性或需要整个 Element出于其他原因,请写下!所有元素中的 IE XElement 元素)

不知道如何在 XmlDocument 中执行此操作,我完全忘记了,希望这可能对您有所帮助,以防您走上这条路(双关语)。

于 2012-10-30T13:58:58.213 回答