方法错误,请尝试* NS变体:
Element mainRootElement = doc.createElementNS( "http://abc.de/x/y/z", // namespace "tns:cmds" // node name including prefix);
第一个参数是名称空间,第二个是节点名称,包括前缀/别名。如果需要,将自动为名称空间添加名称空间定义。它也可以将它们设置为属性。
原始来源中的名称空间为
http://abc.de/x/y/z。通过该属性
xmlns:tns="http://abc.de/x/y/z",
tns为名称空间定义了别名/前缀。DOM
API将为使用* NS方法创建的节点隐式添加名称空间。
xmlns并且
xml是特定名称空间的保留/默认名称空间前缀。
xmlns(名称空间定义)的名称空间为
http://www.w3.org/2000/xmlns/。
要使用setAttributeNS()添加xmlns:*属性,请使用xmlns命名空间:
mainRootElement.setAttributeNS( "http://www.w3.org/2000/xmlns/", // namespace "xmlns:xsi", // node name including prefix "http://www.w3.org/2001/XMLSchema-instance" // value);
但这甚至是不需要的。就像元素一样,如果使用名称空间定义添加属性节点,则将隐式添加名称空间定义。
mainRootElement.setAttributeNS( "http://www.w3.org/2001/XMLSchema-instance", // namespace "xsi:schemaLocation", // node name including prefix "http://abc.de/x/y/z xyzschema.xsd" // value);
命名空间前缀
如果看到类似的节点名
xsi:schemaLocation,则可以通过查找
xmlns:xsi属性来解决。此属性是namepace定义。该值是实际的名称空间。因此,如果您具有属性,
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"则可以将节点名称解析为
{http://www.w3.org/2001/XMLSchema-instance}schemaLocation(Clark表示法)。如果要创建节点,则需要3个值:
- 命名空间:
http://www.w3.org/2001/XMLSchema-instance
- 本地节点名称:
schemaLocation
- 前缀:
xsi
该前缀对于元素节点是可选的,但对于属性节点是必需的。以下三个XML将所有解析为元素节点名称
{http://abc.de/x/y/z}cmds:<tns:cmds xmlns:tns="http://abc.de/x/y/z"/>
<cmds xmlns="http://abc.de/x/y/z"/>
<other:cmds xmlns:other="http://abc.de/x/y/z"/>



