【问题标题】:XML Twig insert processing instruction before matched tag in XML fileXML Twig 在 XML 文件中匹配标签前插入处理指令
【发布时间】:2018-10-02 10:14:50
【问题描述】:

我有一个包含许多标签的 xml 文档。我想用以下形式的处理指令替换这些标签之一:

<?merge  subdocs = 0 :sheet1-01.xml?>.

但是如果使用代码:

$nodes[0]->insert_new_elt('before',=>'<?merge  subdocs = 0 :sheet1-01.xml?>')

我要替换的标签包含在变量 $nodes[0] 中,xml 文件中的结果是:

 <<?merge  subdocs = 0 :sheet1-01.xml?>/>

这显然不是我想要的!我搜索了 XML Twig 的帮助页面,并找到了处理标签的引用,但无法弄清楚如何将它们插入我的 xml 文档中!是否可以使用 XML Twig?如果可以,如何实现?

附:忘了提到我目前正在将整个 XML 文件加载到内存中,而不是使用 twig 处理程序。

非常感谢任何帮助。

【问题讨论】:

    标签: xml perl


    【解决方案1】:

    &lt;?merge subdocs = 0 :sheet1-01.xml?&gt; 中删除&lt;&gt;,XML::Twig 似乎为您添加了它们。

    编辑

    将您的insert_new_elt 调用修改为此

    $nodes[0]->insert_new_elt('before', '#PI' =>'merge  subdocs = 0 :sheet1-01.xml')
    

    我认为这应该如你所愿

    【讨论】:

    • 几乎!现在我得到&lt;?merge subdocs = 0 :sheet1-01.xml?/&gt;,所以结尾/ 是现在的问题,因为元素有结尾/
    【解决方案2】:

    找到了!!为了做我想做的事,我使用了以下代码:

    $nodes[0]->insert_new_elt( before => '#PI', 'merge  subdocs = 0 :sheet1-01.xml');
    

    插入

    <?merge  subdocs = 0 :sheet1-01.xml?>
    

    作为正确位置的处理指令

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 2018-08-30
      • 2014-10-15
      • 2022-11-29
      • 1970-01-01
      相关资源
      最近更新 更多