【问题标题】:Use XmlDocument to get XML data in Metro apps在 Metro 应用程序中使用 XmlDocument 获取 XML 数据
【发布时间】:2013-07-01 10:32:22
【问题描述】:

这对某人来说似乎很愚蠢。 我最近几天一直在努力,但我还没有成功。 我使用 c# 为 Windows Store 应用程序工作。 我正在尝试从本地解析 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 value, 有没有办法获得下一个元素值,。 谢谢。

【问题讨论】:

  • @HenkHolterman 是的,它可能会重复。但是人们认为它是控制台或 Windows 应用程序,这就是为什么问题会以其他方式进行,XmlDocument() 在商店应用程序中有所不同。谢谢
  • 您可以编辑一个问题(和标签)。
  • @HenkHolterman 哈哈,好的。在我发布第一个问题之前,我认为XmlDocument() 的命名空间对于所有.net 平台都是相同的。你建议我改变我的第一个问题.. 对吗?

标签: c# microsoft-metro windows-store-apps xmldocument


【解决方案1】:

您可以通过以下代码来做到这一点,

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

【讨论】:

  • 我收到此错误无法使用 [] 将索引应用于“方法组”类型的表达式请看这个 [sdrv.ms/15an5Tq] 为什么 bcz XmlDocument() 不同在 Windows 商店应用中,。
  • 让我知道你能不能写,itemNodes[0].Attributes["href"].Value
  • 尝试编写:XmlNodeList itemNodes = xmlDoc1.GetElementsByTagName("item"); if (itemNodes.Count > 0) {ids3list.Add(itemNodes[0].Attributes["href"].Value) } 如果没有错误请敲我
  • 不,我试过这些东西,它不起作用。感谢您考虑我的问题。
  • 您可以在 Visual Studio 的对象浏览器(在“查看”菜单上)中查看可用于 Windows 应用商店应用的类。如果您搜索“XmlNode”,它会将您带到 Windows.Data.Xml.Dom.XmlNodeList,它应该可以让您找到所需的一切。
【解决方案2】:

为 Windows Store XmlDocument 读取/写入一个属性值:

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

MSDN: XmlDocument.Attributes

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    • 2013-08-28
    • 2015-05-18
    • 1970-01-01
    相关资源
    最近更新 更多