Запрос XmlDocument, принимающий два значения - PullRequest
0 голосов
/ 09 ноября 2011

Как я могу сделать следующий запрос

Если у меня есть XmlDocument, и у него может быть следующий xml

<EquipmentParameterModified dateTime="2011-04-06T12:03:10.00+01:00" parameter="ExtApp">
  <Extensions ParameterId="External App Interface" FromParameterValue="" ToParameterValue="DISABLED"/>
</EquipmentParameterModified>

Как я могу проверить, что у меня есть EquipmentParameterModified и принять значения ParameterId и ToParameterValue

Спасибо за помощь.

Ответы [ 3 ]

2 голосов
/ 09 ноября 2011
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(new StringReader(xmlstr));
XmlNode node = xmldoc.GetElementsByTagName("Extensions").Item(0);
string id =  node.Attributes["ParameterId"].Value;
string val = node.Attributes["ToParameterValue"].Value;
1 голос
/ 09 ноября 2011

Вы пытаетесь найти элемент по 2 входным поисковым значениям?Что вы хотите, чтобы ваш вывод был?Если вы просто хотите увидеть, что у вас есть соответствующий элемент, этот код должен выполнить свою задачу:

Если да, попробуйте что-то вроде этого:

        public static void Main()
        {
            var paramId = "External App Interface";
            var toParameterValue = "DISABLED";

            var xdoc = XDocument.Parse(@"
<EquipmentParameterModified dateTime='2011-04-06T12:03:10.00+01:00' parameter='ExtApp'>
  <Extensions ParameterId='External App Interface' FromParameterValue='' ToParameterValue='DISABLED'/>
</EquipmentParameterModified>");

            var ret = xdoc.Root
                .Elements("Extensions")
                .Where(e => e.Attribute("ParameterId").Value == paramId &&
                            e.Attribute("ToParameterValue").Value == toParameterValue)
                .FirstOrDefault();

            if (ret != null)
                Console.WriteLine(ret.Name);

        }

Обновление для .NET2.0 & XmlDocument:

        public static void Main()
        {
            var paramId = "External App Interface";
            var toParameterValue = "DISABLED";

            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.LoadXml(@"
<EquipmentParameterModified dateTime='2011-04-06T12:03:10.00+01:00' parameter='ExtApp'>
  <Extensions ParameterId='External App Interface' FromParameterValue='' ToParameterValue='DISABLED'/>
</EquipmentParameterModified>");

            XmlNode node = xmlDoc.GetElementsByTagName("Extensions")[0];
            if (node.Attributes["ParameterId"].Value == paramId &&
                node.Attributes["ToParameterValue"].Value == toParameterValue)
            {
                Console.WriteLine("Found matching node:" + node.Name);
                return;
            }
        }
0 голосов
/ 09 ноября 2011

Я рекомендую использовать XPath, чтобы получить элемент, к которому вы стремитесь, выполнить нулевую проверку, затем получить определенные атрибуты этого элемента, выполнить нулевую проверку значения атрибута перед вызовом свойства .Value.

...