c# - 从字符串中剥离 WordML

标签 c# asp.net xml rss xslt

我的任务是为我公司的职位列表构建可访问的 RSS 提要。我已经从我们的招聘合作伙伴处获得了 RSS 提要;所以我将他们的 RSS XML 转换为我们自己的代理 RSS 提要,以添加额外的数据并限制提要中的项目数量,以便我们列出最新的工作。

RSS 通过 feedvalidator.org 验证(带有警告);但问题是这样的。不幸的是,无论我告诉他们多少次不要这样做;我公司的人力资源团队在插入新职位列表时直接将他们的 Word 文档复制并粘贴到我们的招聘合作伙伴 CMS 中,而将 WordML 留在我的提要中。我相信这个 WordML 会导致 Feedburner 的 BrowserFriendly 功能出现问题;我们希望展示它以使人们更容易订阅。因此,我需要删除提要中的 WordML 标记。

有人有这方面的经验吗?谁能指出我解决这个问题的好方法?

最好;我希望有人指出 .Net(VB 或 C# 都可以)和/或 XSL 中的解决方案。

非常感谢对此的任何建议。

谢谢。

最佳答案

我还没有使用过 WordML,但假设它的元素位于与 RSS 不同的 namespace 中,那么使用 XSLT 应该非常简单。

从一个基本的身份转换开始(一个样式表,将输入文档中的所有节点“按原样”添加到输出树中)。您需要这两个模板:

  <!-- Copy all elements, and recur on their child nodes. -->
  <xsl:template match="*">
    <xsl:copy>
      <xsl:apply-templates select="@*"/>
      <xsl:apply-templates/>
    </xsl:copy>
  </xsl:template>

  <!-- Copy all non-element nodes. -->
  <xsl:template match="@*|text()|comment()|processing-instruction()">
    <xsl:copy/>
  </xsl:template>

使用仅包含上述两个模板的样式表的转换将准确地在输出中重现其输入文档,对符合标准的 XML 处理器允许更改的内容进行取模,例如实体替换。

现在,添加一个匹配 WordML 命名空间中任何元素的模板。为了这个例子的目的,让我们给它命名空间前缀“wml”:

  <!-- Do not copy WordML elements or their attributes to the 
       output tree; just recur on child nodes. -->
  <xsl:template match="wml:*">
    <xsl:apply-templates/>
  </xsl:template>

样式表的开头和结尾留给编码人员作为练习。

关于c# - 从字符串中剥离 WordML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/241526/

相关文章:

jquery - 如何使用 jQuery 对话框将用户控件打开为弹出窗口

c# - MVC 5 全局用户帐户对象

python - 获取 XML 文件中元素外部的注释位置 - Python

javascript - 在 JSFL 中解析 XML?

c# - 推荐具有属性的最佳构造函数?

c# - 错误 95 'System.Array' 不包含 'FindIndex' 的定义

c# - Copy local = false file not found 异常问题

c# - 如何在 SQL Server 中自动生成确认号?

java - 抽象对象列表的 Jaxb 解码

c# - 使用 protobuf 将类型 System.Drawing.Rectangle 从 .Net 序列化为 C++