当前位置: 首页 > 知识库问答 >
问题:

vtd xml替换整个元素

郜杰
2023-03-14

我遇到了奇怪的问题,我在网上找不到任何东西。

我使用xpath定位我的xml块,然后用其他内容替换它,例如:

// input
<html>
    ...
    <style type="">
        background: yellow;
    </style> 
    <link href="path" /> 
</html>


// output
<html>
    ...
    <link href="pathToFileWithBackground" />
    <link href="path_other" /> 
</html>

我使用XMLModifier来实际更新令牌(使用updateToken方法:),它用于属性操作或元素的文本(正文)。

我对样式元素有问题,我想处理它的主体,然后用指向某个文件的链接替换整个元素。

显然,更新文本标记将导致样式标记和其中的链接标记。

    <style type=""><link href="path" />
    </style>

所以我试着把导航器移到样式元素,得到了这个

    <<link href="path" /> type="">
        background: yellow;
    </style> 

我还尝试在样式元素之前插入链接元素并将其删除,但当我尝试保存修饰符的数据时,我从XMLModifier中得到了ModifyException(“在偏移量...和偏移量之间检测到无效的插入/删除条件”)

      ap.selectXPath("//style/text());
      vn.toElement(VTDNav.PARENT);                  
      modifier.insertBeforeElement(replaceString);  
      modifier.remove();                                                

我尝试使用remove(long l)和remove(int offset,int lengtt)版本,但得到了相同的异常

有什么想法吗

共有1个答案

骆英纵
2023-03-14

好吧,问题是

vn.getElementFragment()

返回了错误的长度。可能是因为(在我的测试文件中)样式元素后跟注释和注释字符,并且长度比它应该的要大

这一切都解决了

int o = (int)vn.getElementFragment();
int l = (int)(vn.getElementFragment() >> 32);
final String s = new String(vn.getXML().getBytes(o, l));
l = s.substring(0, s.indexOf("</style>")+8).length(); // ;]
modifier.removeContent(o, l);
modifier.insertBeforeElement(replaceString);

希望它能帮助别人

 类似资料:
  • 我使用的是JSoup,想要替换和整个div,比如 与 我找到了替换div的innerHtml的方法,但是如何替换整个div呢?

  • 我正在尝试将FXML加载到FXML中。主FXML有一个borderpane,第二个包含一个VBox。我用FXMLLoader加载这两个。当我尝试设置boarderpane的中心时,整个屏幕将被第二个FXML所取代。这是代码 有什么想法会导致这种情况吗?我还尝试制作一个新标签,并将其放在borderpane中心,结果相同。

  • 问题内容: 目的 我有一个简单的表,列出了名称(在局部视图中),并且在其上方有一个包含这些名称的下拉列表。目的是根据在下拉列表中选择的名称来过滤表。下拉列表中的选定值更改后,应立即进行过滤,并且应仅再次呈现部分视图。 问题 当我在下拉列表中选择一个值时,部分视图不会在其他视图中呈现,而是显示为整个页面。但是,当我在Ajax.BeginForm块中包含一个提交按钮并触发对提交按钮的操作时,它确实可以

  • 然后我试着这样称呼它。 不幸的是,修改URL编码路径替换后,我最终请求而不是。是否有任何方法可以禁用路径替换的URL编码或跨多个路径段进行替换?不幸的是,我甚至不知道有多少路径段,它都是由API控制的。

  • 替换元素(Replaced element)是CSS2里面引入的术语,和CSS格式化模型范围有关。 替换元素 首先引用一下W3对此术语的定义: An element whose content is outside the scope of the CSS formatting model, such as an image, embedded document, or applet. ... 所

  • 问题内容: 我想查找并替换整个数据库,而不仅仅是一个表。 我该如何更改以下脚本才能工作? 我只使用星号吗? 问题答案: sqldump到文本文件,查找/替换,重新导入sqldump。 将数据库转储到文本文件 对其进行更改后,还原数据库。