Как сопоставить строковое значение ArrayList с атрибутом XDocument Title, используя c # 2.0 - PullRequest
0 голосов
/ 03 февраля 2012

Я получил ниже строку формата XML, как показано ниже:

<?xml version="1.0"?>
<tcm:ListKeywords xmlns:tcm="http://www.tridion.com/ContentManager/5.0" Managed="1024">
  <tcm:Item ID="tcm:229-552514-1024" Type="1024" Title="Aalborg" Lock="0" IsRoot="true"/>
  <tcm:Item ID="tcm:229-552512-1024" Type="1024" Title="Aarhus" Lock="0" IsRoot="true"/>
  <tcm:Item ID="tcm:229-329379-1024" Type="1024" Title="Aberdeen" Lock="0" IsRoot="true"/>
  <tcm:Item ID="tcm:229-569711-1024" Type="1024" Title="Abha" Lock="0" IsRoot="true"/>
  <tcm:Item ID="tcm:229-192866-1024" Type="1024" Title="Abidjan" Lock="0" IsRoot="true"/>
  <tcm:Item ID="tcm:229-569704-1024" Type="1024" Title="Abilene" Lock="0" IsRoot="true"/>
  <tcm:Item ID="tcm:229-192850-1024" Type="1024" Title="Abu Dhabi" Lock="0" IsRoot="true"/>
  <tcm:Item ID="tcm:229-192888-1024" Type="1024" Title="Accra" Lock="0" IsRoot="true"/>
</tcm:ListKeywords>

Теперь у меня Arraylist строк, я хочу написать функцию, которая будет принимать строку XML выше как параметр, а также строку Arraylist и будет соответствовать атрибуту заголовка XML // Item, например, как показано ниже:

public bool matchArrayWithXMLTitle(Xmldocument xDoc, string str)
{
    If (//Item/Title == str)
    return true;
    else
    return false;
} 

Тогда я буду использовать его, как показано ниже

bool matchStr = matchArrayWithXMLTitle(xDoc,"Abidjan"); // Должно возвращать true, так как в XML есть Абиджан

Пожалуйста, предложите !!

1 Ответ

0 голосов
/ 04 февраля 2012

Ниже решение работало для меня.

static void Main(string[] args)
        {

            string xmlListKeywords = @"<?xml version=""1.0""?>
                    <tcm:ListKeywords xmlns:tcm=""http://www.tridion.com/ContentManager/5.0"" Managed=""1024"">
                      <tcm:Item ID=""tcm:229-552514-1024"" Type=""1024"" Title=""Aalborg"" Lock=""0"" IsRoot=""true""/>
                      <tcm:Item ID=""tcm:229-552512-1024"" Type=""1024"" Title=""Aarhus"" Lock=""0"" IsRoot=""true""/>
                      <tcm:Item ID=""tcm:229-329379-1024"" Type=""1024"" Title=""Aberdeen"" Lock=""0"" IsRoot=""true""/>
                      <tcm:Item ID=""tcm:229-569711-1024"" Type=""1024"" Title=""Abha"" Lock=""0"" IsRoot=""true""/>
                      <tcm:Item ID=""tcm:229-192866-1024"" Type=""1024"" Title=""Abidjan"" Lock=""0"" IsRoot=""true""/>
                      <tcm:Item ID=""tcm:229-569704-1024"" Type=""1024"" Title=""Abilene"" Lock=""0"" IsRoot=""true""/>
                      <tcm:Item ID=""tcm:229-192850-1024"" Type=""1024"" Title=""Abu Dhabi"" Lock=""0"" IsRoot=""true""/>
                      <tcm:Item ID=""tcm:229-192888-1024"" Type=""1024"" Title=""Accra"" Lock=""0"" IsRoot=""true""/>
                    </tcm:ListKeywords>";
            XmlDocument xdoc = new XmlDocument();
            xdoc.LoadXml(xmlListKeywords);

            bool bMatch = matchArrayWithXMLTitle(xdoc, "Abidjan");
            bMatch = matchArrayWithXMLTitle(xdoc, "Test");

        }

        public static bool matchArrayWithXMLTitle(XmlDocument xDoc, string str)
        {
            XmlNode targetNode = xDoc.SelectSingleNode("//*[@Title = '" + str + "']");
            if (targetNode != null)
            {
                return true;
            }
            else
            {
                return false;
            }
        }

Пожалуйста, предложите для любых вопросов.

Спасибо.

MS

...