在XML标签中获取标签值

时间:2013-07-03 12:18:40

标签: c# windows-store-apps xmldocument

我有以下Xml文件内容,我正在尝试获取<text>&amp;的值<content .. />标记仅位于标记<navmap> ... </navmap>内。

我正在使用nameSpace XmlDocument()

using Windows.Data.Xml.Dom;

我之前曾与XmlDocument()合作,但这种类型的XMl内容完全不同,我不知道我必须在标签中使用哪个属性用于Tag值。

      <docTitle>
         <text>XXXXXXX</text>
      </docTitle>
  <navMap>
    <navPoint id="navpoint-1" playOrder="1">
      <navLabel>
        <text>Title Page</text>
      </navLabel>
        <content src="000.html" />
    </navPoint>
    <navPoint id="navpoint-2" playOrder="2">
      <navLabel>
        <text>Main Text</text>
      </navLabel>
        <content src="01M.html" />
    </navPoint>
  </navMap>

我正在使用c#使用Windows应用商店应用 我试过这个..

            using Windows.Data.Xml.Dom;
             ---------------
             ---------------
             ---------------

            StorageFile tocFile = await finalfolder.GetFileAsync(tocFileValue);
            string fileContents1 = await FileIO.ReadTextAsync(tocFile);
            string encodedContent1 = fileContents1.Replace("&nbsp;", "&#160;");
            tocDocument.LoadXml(encodedContent1,loadSettings1);
            XmlNodeList tocNodeList = tocDocument.GetElementsByTagName("navMap");
            foreach (XmlElement Element in tocNodeList)
            {
                //Element is showing as null..
            }   

谁熟悉nameSpace的XmlDocument() using Windows.Data.Xml.Dom;给我建议。

谢谢

2 个答案:

答案 0 :(得分:1)

你可以这样做......

 XmlDocument xml = new XmlDocument();
        xml.LoadXml(urXml);

    XmlNodeList textlist = xml.GetElementsByTagName("text");
    XmlNodeList contentList = xml.GetElementsByTagName("content");

    for (int i = 0; i < textlist.Count; i++)
    {
        string s1 = textlist[i].InnerText; //
    }
    for (int j = 0; j < contentList.Count; j++)
    {
        string s2 = contentList[j].InnerText;
    }

你可以通过这个来获取文本..字符串只是为了显示你可以得到内部文本..如果你想存储文本标签下的所有值...使用列表和添加他们的内部文本< /强>

如: -

for (int i = 0; i < textlist.Count; i++)
{
if(i==0)
List<string> str=new list<string>();

str.Add(textlist[i].InnerText);
}

与内容标签相同的情况..

希望这有助于......:)

答案 1 :(得分:1)

使用XmlDocument,您可以执行以下操作...

XmlNodeList xnList = xd.SelectNodes("navMap/navPoint"); //xd being your xmldocument.   returns all "navPoint" nodes under navMap and navMap  is your root node
        foreach (XmlNode node in xnList)
        {
            string retText = node["navLabel"]["text"].InnerText;                 // navLabel/text
            string retContentAtt = node["content"].Attributes["src"].Value;    // navPoint/content src=" 
        }

我认为这就是你要找的东西。希望它有所帮助