【问题标题】:Parse XML into String type array in Windows Phone 8 App using C#使用 C# 在 Windows Phone 8 App 中将 XML 解析为字符串类型数组
【发布时间】:2013-12-23 10:30:47
【问题描述】:

我有一个 XML 文件,我喜欢解析并获取字符串类型数组中的值。我知道有 XMLSerialization 命名空间和其他东西。但我想要实现的是获取字符串数组中的值。可以使用 Foreach 循环或 for 循环获得。

例如,这是我的 XML 文件:

<?xml version="1.0" encoding="utf-8" ?>
<channel>
<title>Social Media</title>
<item>
<title>Facebook</title>
<link>http://www.facebook.com/</link>
</item>
<item>
<title>Twitter</title>
<link>http://www.twitter.com/</link>
</item>
<item>
<title>Google+</title>
<link>http://plus.google.com/</link>
</item>
</channel>

现在,我有两个字符串类型的数组作为 C# 文件的变量。

例如:

public string[] WebsiteName;
public string[] Urls;

现在,我想将 WebsiteName 的所有值放入 WebsiteName 数组,并将网站链接放入 Urls 数组。

有什么办法吗?如果是,请给我看。这将非常有帮助。

【问题讨论】:

  • 为此使用 LINQ 并进行投影
  • 您能给我一个如何使用投影的代码示例吗?我还不是很熟练。所以我不知道该怎么做。 @techlorr

标签: c# xml xaml windows-phone-8 arrays


【解决方案1】:

这是一个使用 LINQ 获取网站名称和链接的示例:

var xml = @"<?xml version=""1.0"" encoding=""utf-8"" ?>
<channel>
<title>Social Media</title>
<item>
<title>Facebook</title>
<link>http://www.facebook.com/</link>
</item>
<item>
<title>Twitter</title>
<link>http://www.twitter.com/</link>
</item>
<item>
<title>Google+</title>
<link>http://plus.google.com/</link>
</item>
</channel>";
var doc = XDocument.Parse(xml);
WebsiteName = doc.Descendants("title").Select(o => o.Value).ToArray();
Urls = doc.Descendants("link").Select(o => o.Value).ToArray();
  • XDocument.Parse(xml):从字符串创建 XDocument。如果你希望源是文件而不是字符串,那么你可以使用XDocument.Load("path_to_the_xml_file")
  • doc.Descendants("title"): 会得到所有名为“title”的标签,然后
  • .Select(o =&gt; o.Value): 将获取开始和结束标记之间的字符串,也就是值

【讨论】:

  • 我正在从 xml 文件而不是字符串进行解析。所以,我使用了 XDocument.Load("FilePath");但是我在这里遇到了一个异常:System.Xml.ni.dll 中发生了“System.Xml.XmlException”类型的第一次机会异常。你能告诉我它的解决方案吗?
  • hmm.. 该错误消息不够具体,无法知道实际问题是什么。您是否尝试过调试以获得更详细的错误消息?也许文件包含无效的 xml 格式、缺少结束标记或其他内容?
  • 我有一个名为 SocialMedia.xml 的 xml 文件。当我从那里复制整个代码并按照您上面描述的方式在我的 C# 文件中编写代码时,它可以完美运行。 var xml = @"社交媒体 Facebook facebook.com/</link> Twitter twitter.com/</link> Google+ plus.google.com/</link> ";但我试图直接从 XML 文件中获取值。
  • 例如:我有一个名为 Social 的文件夹,该文件夹内是 SocialMedia.xml。 (代码都是一样的)所以,我想做的只是从那里解析值。例如,我在我的 C# 代码中尝试过: var doc = XDocument.Load("/Social/SocialMedia.xml"); /* 我也试过 var doc = XDocument.Load("Social/SocialMedia.xml");*/ WebsiteName = doc.Descendants("title").Select(o => o.Value).ToArray(); Urls = doc.Descendants("link").Select(o => o.Value).ToArray();但这就是让我例外的原因。
  • 如果是 WP 应用程序,您需要将 xml 文件包含到项目中,您这样做了吗?
【解决方案2】:
var doc = XDocument.Parse(xml);
var WebsiteName = doc.Descendants("title").Select(o => o.Value).ToArray();

ListBox.ItemsSource = WebsiteName;

你得到的内容写在列表框中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-15
    相关资源
    最近更新 更多