【问题标题】:How can i parse this kind of formatted XML?我如何解析这种格式化的 XML?
【发布时间】:2017-03-17 12:26:43
【问题描述】:

这是我从外部来源获得的当前格式

<d:entry id="_qkq" d:title="DuMont Television Network">
        <d:index d:value="DuMont Television Network" d:title="DuMont Television Network"/>
        <d:index d:value="dumont tv" d:title="DuMont Television Network"/>
        <d:index d:value="dumont network" d:title="DuMont Television Network"/>
        <h1>DuMont Television Network</h1>
       some value etc 
</d:entry>

如果它像下面这样,我可以很容易地解析它。那么知道如何像下面那样解析它或将其转换为下面的格式吗?

<entry>
   <entryId>_qkq</entryId>
   <entryTitle>DuMont Television Network</entryTitle>
   <entryIndex>
      <value>DuMont Television Network</value>
      <title>DuMont Television Network</title>
   </entryIndex>
   <entryIndex>
      <value>dumont tv</value>
      <title>DuMont Television Network</title>
   </entryIndex>
   <entryIndex>
      <value>dumont network</value>
      <title>DuMont Television Network</title>
   </entryIndex>
   <entryValue>
      <h1>DuMont Television Network</h1>
      some value etc
   </entryValue>
</entry>

非常感谢您的回答

【问题讨论】:

  • 你可以使用这个:msdn.microsoft.com/de-de/library/…
  • 我将重复您上次尝试提出此问题时的评论。这不是一个代码编写服务,尝试一些东西,然后返回一个特定的问题,提供minimal reproducible example
  • 为了方便您,您是否在解析元素名称的d: 部分或访问属性时遇到问题?
  • @TheLethalCoder 如果我知道我不会在这里问。如果您对此问题有任何想法,请随时提供。不,我对 d 没有任何定义:
  • 请注意 xmlns:d.它说明与哪个名称空间别名“d”对应。然后阅读如何使用命名空间解析 xml(这里和互联网上都有很多关于如何做到这一点的问题)。

标签: c# .net xml xml-parsing .net-4.6


【解决方案1】:

好的,这很简单,可以通过多种方式完成,但为了便于开发:

  1. 为此 XML 生成类 - 在 Visual Studio 中,创建新的代码文件。将完整的 XML 复制到剪贴板。点击Edit-paste special - Paste XML as classes
    这将为您提供必要的类,根为dictionary。 (如果需要,我可以添加生成的列表)
  2. 然后,在任何必要的文件中,您可以执行以下操作:

      var data = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \r\n<d:dictionary xmlns=\"w3.org/1999/xhtml\" xmlns:d=\"apple.com/DTDs/DictionaryService-1.0.rng\">\r\n\t<d:entry id=\"_qkq\" d:title=\"DuMont Television Network\">\r\n\t\t<d:index d:value=\"DuMont Television Network\" d:title=\"DuMont Television Network\"/>\r\n\t\t<d:index d:value=\"dumont tv\" d:title=\"DuMont Television Network\"/>\r\n\t\t<d:index d:value=\"dumont network\" d:title=\"DuMont Television Network\"/>\r\n\t\t<h1>DuMont Television Network</h1>\r\n\t</d:entry>\r\n</d:dictionary>";
    
      XmlSerializer serializer = new XmlSerializer(typeof(dictionary));
      using (TextReader reader = new StringReader(data))
      {
        dictionary result = (dictionary)serializer.Deserialize(reader);
      }
    

result 现在包含您的数据:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2018-03-01
    • 2013-07-17
    • 2018-03-07
    相关资源
    最近更新 更多