【问题标题】:Set LocalName property of an ATTRIBUTE-NODE in java DOM在 java DOM 中设置属性节点的 LocalName 属性
【发布时间】:2011-12-03 12:02:08
【问题描述】:

我有一个 XML 格式

<root xmlns:ns2="prop" xmlns:ns3="prop2" .... etc ... .. </root>

我需要将 ns2、ns3 等更改为有意义的名称。 然而,在 org.w3c.dom.Node 对象上,虽然存在 getLocalName 方法但没有可用的 setLocalName。

请让我知道我是否可以进行所需的更改? 尽管有具体实现的更受青睐,但即使是 hacky 也受到欢迎。

【问题讨论】:

  • localName 不是指前缀,而是指元素名称(例如ns3:xyz 的本地名称是xyz,而不是ns3)。
  • 我知道,但我需要更改本地名称本身.. 如果您查看我所指的 xml 结构,在我的情况下是 ns2 ns3 等 atre 本地名称。

标签: java dom xml-namespaces


【解决方案1】:

更改这些属性对您没有帮助。这些属性与嵌套在该根节点下的节点使用的前缀相关联。您需要做的是浏览文档并更改这些节点的前缀。

【讨论】:

  • 但为了我的目的,我必须更改这些属性。有没有办法克隆节点并更改其本地名称并将其替换为原始节点?
  • 因为它们应该是我正在生成的 xml 的自定义命名空间前缀。例如:如果我在根元素中有一个条目 xmlns:ns3="Some namespace" ,我将有像 ... 等子元素,我可以为使用 setPrefix 方法的子元素。例如,我已将所有出现的 ns3 更改为自定义名称。我也需要在根元素列表中反映相同的内容,
  • (cont..d) 我没有任何 DOM 内置方法。希望你明白我想说的。
  • 是的,我的意思是,如果您更改所有子元素的前缀,xmlns 属性将自动更新。您通常不需要 需要 手动操作 xmlns 属性(无论如何它们都不是真正的属性)。你只需用你想要的命名空间/前缀定义你的元素,剩下的交给 DOM 代码。
猜你喜欢
  • 2018-09-28
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 2022-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-06
相关资源
最近更新 更多