2013-07-01 71 views
1

對某人來說這似乎很愚蠢。 我在這幾天工作仍然沒有取得成功。 我使用c#工作於Windows應用商店應用程序。 我想從本地解析XMl文件。使用XmlDocument獲取Metro應用程序中的XML數據

<?xml version="1.0" ?> 
<package version="2.0" xmlns="http://www.idpf.org/2007/opf" unique-identifier="BookId"> 
    <metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf"> 
    <dc:title>Cinderella; Or The Little Glass Slipper</dc:title> 
    <dc:creator>Anonymous</dc:creator> 
    <dc:date>2009-10-14</dc:date> 
    <dc:subject>Youth</dc:subject> 
    <dc:language>en</dc:language> 
    <dc:publisher>Web Books Publishing</dc:publisher> 
    <dc:identifier id="BookId">web-books-154</dc:identifier> 
</metadata> 
<manifest> 
    <item id="ncx" href="toc.ncx" media-type="application/x-dtbncx+xml" /> 
    <item id="W000Title" href="000Title.html" media-type="application/xhtml+xml" /> 
    <item id="W01MB154" href="01MB154.html" media-type="application/xhtml+xml" /> 
    <item id="WTOC" href="TOC.html" media-type="application/xhtml+xml" /> 
    <item id="style" href="style.css" media-type="text/css" /> 
    <item id="cover" href="cover.jpg" media-type="image/jpeg" /> 
     <item id="Wimg11" href="images/img11.jpg" media-type="image/jpeg" /> 
     <item id="Wimg12" href="images/img12.jpg" media-type="image/jpeg" /> 
     <item id="Wimg2" href="images/img2.jpg" media-type="image/jpeg" /> 
     <item id="Wimg4" href="images/img4.jpg" media-type="image/jpeg" /> 
     <item id="Wimg6" href="images/img6.jpg" media-type="image/jpeg" /> 
     <item id="Wimg7" href="images/img7.jpg" media-type="image/jpeg" /> 
     <item id="Wimg9" href="images/img9.jpg" media-type="image/jpeg" /> 
</manifest> 
    <spine toc="ncx"> 
    <itemref idref="W000Title" /> 
    <itemref idref="W01MB154" /> 
</spine> 
</package> 

從上面的XML文件,我想在 HREF值對於這個我XmlDocument()。這是我的C#代碼。

XmlNodeList itemref = xmlDoc1.GetElementsByTagName("itemref"); 
      foreach (XmlElement idref in itemref) 
      { 
       if (idref.Attributes.Count > 0) 
       { 
        XmlAttribute Str1 = idref.GetAttributeNode("idref"); 
        ids1list.Add(Str1.Value); //List 
      } 
      } 
XmlNodeList itemNodes = xmlDoc1.GetElementsByTagName("item"); 
      foreach (XmlElement item in itemNodes) 
      { 
        XmlAttribute str2 = item.GetAttributeNode("id"); 
        ids2list.Add(str2.value); 
        XmlAttribute str3 = item.GetAttributeNode("href"); 
        ids3list.Add(str3.value); 
      } 
      var resut = ids1list.Intersect(ids2list).ToList(); 

resut列表ID元素的值。我想要的下一個值是href使用id值, 有沒有什麼辦法獲得下一個元素值。 謝謝。

+0

可能重複值在C#](http://stackoverflow.com/questions/17396655/using-xmldocument-to-retrieve-values-in-c-sharp) –

+0

@HenkHolterman是的,它可以y複製。但人們認爲它是控制檯或Windows應用程序,這就是爲什麼問題以其他方式進行的原因,Store應用程序中的'XmlDocument()'是不同的。 謝謝 – Kumar

+0

你可以_edit_一個問題(和標籤)。 –

回答

3

您可以通過下面的代碼做到這一點,

  XmlNodeList itemNodes = xmlDoc1.GetElementsByTagName("item"); 
      if (itemNodes.Count > 0) 
      { 
       foreach (XmlElement node in itemNodes) 
       { 
       ids3list.Add(node.Attributes["href"].Value); 
       } 
      } 
+0

我得到這個錯誤**不能用[]對'method group'類型的表達式進行索引編排** Plz看到這個[http://sdrv.ms/15an5Tq] 爲什麼bcz'XmlDocument()'是不同的在Windows商店應用程序中。 – Kumar

+0

讓我知道你可以寫,itemNodes [0] .Attributes [「href」]。值 – Rezoan

+0

嘗試寫:XmlNodeList itemNodes = xmlDoc1.GetElementsByTagName(「item」); if(itemNodes.Count> 0) {ids3list.Add(itemNodes [0] .Attributes [「href」]。Value) }如果顯示沒有錯誤請敲我 – Rezoan

0

對於Windows應用商店的XmlDocument讀/寫的屬性值:[使用XmlDocument的檢索

XmlAttribute attr = (XmlAttribute)attrColl.GetNamedItem("href"); 
attr.Value = "images/img11.jpg"; 
or 
string val = attr.Value; 

MSDN: XmlDocument.Attributes

相關問題