Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 防止JDOM2创建xmlns="&引用;_Java_Jdom_Jdom 2 - Fatal编程技术网

Java 防止JDOM2创建xmlns="&引用;

Java 防止JDOM2创建xmlns="&引用;,java,jdom,jdom-2,Java,Jdom,Jdom 2,我尝试使用JDOM2将新的元素添加到persistence.xml文件中 persistenceUnitEl.add(new Element("class").addContent(className)); 问题是jdom2总是将xmlns=”“添加到元素中 我怎样才能防止这种情况 removeAttribute(“xmlns”)不起作用,removeNameSpace(el.getNameSpace())也不起作用。JDOM仅在将子元素添加到已在命名空间中的其他元素时添加xmlns=”“。X

我尝试使用JDOM2将新的
元素添加到persistence.xml文件中

persistenceUnitEl.add(new Element("class").addContent(className));
问题是jdom2总是将
xmlns=”“
添加到
元素中

我怎样才能防止这种情况


removeAttribute(“xmlns”)
不起作用,
removeNameSpace(el.getNameSpace())
也不起作用。

JDOM仅在将子元素添加到已在命名空间中的其他元素时添加
xmlns=”“
。XML中的默认名称空间是没有前缀的名称空间。在以下示例中:

<root>
    <child />
</root>
请注意,上面示例中的根元素和子元素位于名称空间
http://mynamespace
,并且该名称空间具有前缀
ns
。上述代码在语义上与(与)相同:

在上面的例子中,
PersistenceUnit
位于命名空间
…something..
中。现在,您要求JDOM向文档中添加元素
新元素(“类”)
,因此您得到:

<tagname xmlns="...something....">
    <PersistenceUnit>
        <class xmlns="" />
    </PersistenceUnit>
</tagname>
现在,真正的问题是“class”元素是否实际属于与父元素相同的名称空间。但这是一个只有你才能回答的问题

资源

  • 文件

JDOM仅在将子元素添加到已在命名空间中的其他元素时添加
xmlns=”“
。XML中的默认名称空间是没有前缀的名称空间。在以下示例中:

<root>
    <child />
</root>
请注意,上面示例中的根元素和子元素位于名称空间
http://mynamespace
,并且该名称空间具有前缀
ns
。上述代码在语义上与(与)相同:

在上面的例子中,
PersistenceUnit
位于命名空间
…something..
中。现在,您要求JDOM向文档中添加元素
新元素(“类”)
,因此您得到:

<tagname xmlns="...something....">
    <PersistenceUnit>
        <class xmlns="" />
    </PersistenceUnit>
</tagname>
现在,真正的问题是“class”元素是否实际属于与父元素相同的名称空间。但这是一个只有你才能回答的问题

资源

  • 文件

    • 据我所知,我认为这就是你想要的

      <RootTagname xmlns="...some namespace....">
          <SubTag>
              <NewElement yourAttrib="1"/>
          </SubTag> 
      </RootTagname >
      
      这是完整的代码

      Namespace namespace = Namespace.getNamespace("prefix", ".....some namespace....");
      XPathBuilder<Element> subTagXpathelementBuilder = new XPathBuilder<Element>("//prefix:SubTag", Filters.element());
      subTagXpathelementBuilder.setNamespace(namespace);
      XPathFactory xpathFactory = XPathFactory.instance();
      
      Document doc = (Document) builder.build(xmlFile);
      
      XPathExpression<Element> xpath = subTagXpathelementBuilder .compileWith(xpathFactory);
      List<Element> subElementsList = xpath.evaluate(doc);
      for (Element subElement : subElementsList ) {
          Element newElement = new Element("NewElement", subElement.getNamespace());
      
          List<Attribute> newElementAttribList = newElement.getAttributes();
          newElementAttribList .add(new Attribute("yourAttrib", "1"));
          subElement .addContent(newElement);
      } 
      
      Namespace Namespace=Namespace.getNamespace(“前缀”、“…某些名称空间…”);
      XPathBuilder子标记XPathElementBuilder=新XPathBuilder(“//前缀:SubTag”,Filters.element());
      subTagXpathelementBuilder.setNamespace(名称空间);
      XPathFactory XPathFactory=XPathFactory.instance();
      documentdoc=(Document)builder.build(xmlFile);
      XPathExpression xpath=subTagXpathelementBuilder.compileWith(xpathFactory);
      List subElementsList=xpath.evaluate(doc);
      for(元素子元素:子元素列表){
      Element newElement=newElement(“newElement”,subElement.getNamespace());
      List newElementAttribList=newElement.getAttributes();
      添加(新属性(“yourAttrib”、“1”);
      subElement.addContent(newElement);
      } 
      
      据我所知,我认为这就是你想要的

      <RootTagname xmlns="...some namespace....">
          <SubTag>
              <NewElement yourAttrib="1"/>
          </SubTag> 
      </RootTagname >
      
      这是完整的代码

      Namespace namespace = Namespace.getNamespace("prefix", ".....some namespace....");
      XPathBuilder<Element> subTagXpathelementBuilder = new XPathBuilder<Element>("//prefix:SubTag", Filters.element());
      subTagXpathelementBuilder.setNamespace(namespace);
      XPathFactory xpathFactory = XPathFactory.instance();
      
      Document doc = (Document) builder.build(xmlFile);
      
      XPathExpression<Element> xpath = subTagXpathelementBuilder .compileWith(xpathFactory);
      List<Element> subElementsList = xpath.evaluate(doc);
      for (Element subElement : subElementsList ) {
          Element newElement = new Element("NewElement", subElement.getNamespace());
      
          List<Attribute> newElementAttribList = newElement.getAttributes();
          newElementAttribList .add(new Attribute("yourAttrib", "1"));
          subElement .addContent(newElement);
      } 
      
      Namespace Namespace=Namespace.getNamespace(“前缀”、“…某些名称空间…”);
      XPathBuilder子标记XPathElementBuilder=新XPathBuilder(“//前缀:SubTag”,Filters.element());
      subTagXpathelementBuilder.setNamespace(名称空间);
      XPathFactory XPathFactory=XPathFactory.instance();
      documentdoc=(Document)builder.build(xmlFile);
      XPathExpression xpath=subTagXpathelementBuilder.compileWith(xpathFactory);
      List subElementsList=xpath.evaluate(doc);
      for(元素子元素:子元素列表){
      Element newElement=newElement(“newElement”,subElement.getNamespace());
      List newElementAttribList=newElement.getAttributes();
      添加(新属性(“yourAttrib”、“1”);
      subElement.addContent(newElement);
      } 
      
      谢谢!!你的解释帮助我理解了名称空间是如何工作的。这个答案应该被认为是正确的答案(即使在3年后)。谢谢!!你的解释帮助我理解了名称空间是如何工作的。这个答案应该被认为是正确的答案(即使3年后)。
      Namespace parentNamespace = persistenceUnitEl.getNamespace();
      persistenceUnitEl.add(new Element("class", parentNamespace).addContent(className));
      
      <RootTagname xmlns="...some namespace....">
          <SubTag>
              <NewElement yourAttrib="1"/>
          </SubTag> 
      </RootTagname >
      
      <RootTagname xmlns="...some namespace....">
          <SubTag>
              <NewElement xmlns="" yourAttrib="1"/>
          </SubTag> 
      </RootTagname >
      
      Element newElement = new Element("NewElement", subElement.getNamespace());
      
      Namespace namespace = Namespace.getNamespace("prefix", ".....some namespace....");
      XPathBuilder<Element> subTagXpathelementBuilder = new XPathBuilder<Element>("//prefix:SubTag", Filters.element());
      subTagXpathelementBuilder.setNamespace(namespace);
      XPathFactory xpathFactory = XPathFactory.instance();
      
      Document doc = (Document) builder.build(xmlFile);
      
      XPathExpression<Element> xpath = subTagXpathelementBuilder .compileWith(xpathFactory);
      List<Element> subElementsList = xpath.evaluate(doc);
      for (Element subElement : subElementsList ) {
          Element newElement = new Element("NewElement", subElement.getNamespace());
      
          List<Attribute> newElementAttribList = newElement.getAttributes();
          newElementAttribList .add(new Attribute("yourAttrib", "1"));
          subElement .addContent(newElement);
      }