【问题标题】:Regex in word XMLWord XML 中的正则表达式
【发布时间】:2018-08-27 21:36:33
【问题描述】:

我有一个来自 docx 格式的 xml:

<w:p w:rsidR="00AE2D8E" w:rsidRPr="00AE2D8E" w:rsidRDefault="00AE2D8E">
        <w:pPr>
            <w:rPr>
                <w:lang w:val="en-US"/>
            </w:rPr>
        </w:pPr>
        <w:r w:rsidRPr="00AE2D8E">
            <w:rPr>
                <w:lang w:val="en-US"/>
            </w:rPr>
            <w:t xml:space="preserve">Lorem ipsum dolor sit </w:t>
        </w:r>
        <w:proofErr w:type="spellStart"/>
        <w:r w:rsidRPr="00AE2D8E">
            <w:rPr>
                <w:b/>
                <w:lang w:val="en-US"/>
            </w:rPr>
            <w:t>amet</w:t>
        </w:r>
        <w:proofErr w:type="spellEnd"/>
        <w:r w:rsidRPr="00AE2D8E">
            <w:rPr>
                <w:b/>
                <w:lang w:val="en-US"/>
            </w:rPr>
            <w:t xml:space="preserve"> </w:t>
        </w:r>
        <w:proofErr w:type="spellStart"/>
        <w:r w:rsidRPr="00AE2D8E">
            <w:rPr>
                <w:b/>
                <w:lang w:val="en-US"/>
            </w:rPr>
            <w:t>consecteur</w:t>
        </w:r>
        <w:proofErr w:type="spellEnd"/>
        <w:r w:rsidRPr="00AE2D8E">
            <w:rPr>
                <w:b/>
                <w:lang w:val="en-US"/>
            </w:rPr>
            <w:t>.</w:t>
        </w:r>
        <w:bookmarkStart w:id="0" w:name="_GoBack"/>
        <w:bookmarkEnd w:id="0"/>
    </w:p>

docx 中写的是“Lorem ipsum dolor sit amet consecteur.”,但由于来源、粗体等方面的差异而最终中断。

问题是我需要替换文本“Lorem ipsum dolor sit amet consecteur”。由任何其他人。

有谁知道如何通过正则表达式做到这一点?这是可能的?如果没有,还有什么其他可行的选择?

【问题讨论】:

    标签: javascript regex xml openxml docx


    【解决方案1】:

    您绝对想尝试使用正则表达式解析 OOXML。

    至少,您需要真正的 XML 解析器和 XPath 等工具:

    normalize-space(/w:p)
    

    几乎会返回你想要的,

    Lorem ipsum dolor sit amet consecteur .
    

    【讨论】:

    • 我已经可以从xml运行中提取文本了,问题是我需要重新构造xml。
    • 那么你绝对肯定不想在这里使用正则表达式。使用诸如 Open XML Power Tools 之类的库。如果您想单独行动,则必须精通 OOXML 和高级 XML 技术——这是一项艰巨的任务。最后提示:对于无格式文本,您上面的段落可以简化为&lt;w:p&gt;&lt;w:r&gt;&lt;w:t&gt;New text here&lt;/w:t&gt;&lt;/w:r&gt;&lt;/w:p&gt;;只是不要指望从另一个应用程序中看到它。祝你好运。
    • 我可以在javascript中使用openXML吗?
    • Eric White 开始了一个将他的 C# 库移植到 JavaScript 的项目,但您必须检查它是否达到了奇偶性(或者它有多接近)。
    【解决方案2】:

    如果您想在 JavaScript 中使用 OpenXML 文档,您应该查看Eric White's Open XML, SharePoint, and Office Blog。他的电影演员展示了:

    • 如何使最终用户能够将 Open XML 应用程序加载到客户端 JavaScript 数据中,修改文档,然后将该文档保存回本地硬盘。

    • 以及如何根据 Web 应用程序中的用户输入生成 Open XML 应用程序。

    code 附在这篇博文后面。这有点复杂,需要额外的库 - 但绝对可行。

    【讨论】:

    • 我已经使用 javascript 库来提取 XML (mammothjs)
    • @Juliano 看,kjhughes 基本上给出了相同的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多