2

Dom を使用して xml ファイルを作成していますが、以下のようなタグ属性を書き込むことができません

<m:FC_TargetPath="SyndicationUpdated" m:FC_KeepInContent="false" rt:filterable="false">

属性を設定すると、名前と値で成功しますが、m:またはrt:プレフィックスを使用すると例外が発生します。どうすればそれを処理できますか?

これは私が使用しているコードです

ent.setAttribute("m:FC_TargetPath", "SyndicationUpdated");

例外は

'Namespace for prefix 'm' has not been declared.
4

2 に答える 2

0

以下のサンプルプログラム:

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class Dom
{
   public static void main( String[] args ) throws Throwable
   {
      DocumentBuilderFactory dbf  = DocumentBuilderFactory.newInstance();
      dbf.setNamespaceAware( true );

      DocumentBuilder db = dbf.newDocumentBuilder();
      Document doc = db.newDocument();

      Element root = doc.createElement( "root" );
      root.setAttribute( "xmlns:m" , "http://www.lfinance.fr/blog-rachat-credits" );
      root.setAttribute( "xmlns:rt", "http://www.lfinance.fr/forum-rachat-credits" );
      doc.appendChild( root );

      Element elt = doc.createElement( "simple" );
      elt.setAttribute( "m:FC_TargetPath"   , "false" );
      elt.setAttribute( "m:FC_KeepInContent", "false" );
      elt.setAttribute( "rt:filterable"     , "false" );

      root.appendChild( doc.createTextNode( "\n\t" ));
      root.appendChild( elt );
      root.appendChild( doc.createTextNode( "\n" ));
      TransformerFactory.newInstance().newTransformer().transform(
         new DOMSource( doc ),
         new StreamResult( System.out ));
   }
}

出力:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root
    xmlns:m="http://www.lfinance.fr/blog-rachat-credits"
    xmlns:rt="http://www.lfinance.fr/forum-rachat-credits">
    <simple
        m:FC_KeepInContent="false"
        m:FC_TargetPath="false"
        rt:filterable="false" />
</root>
于 2012-10-16T20:44:53.973 に答える
0

setAttributeNSの代わりに使用する必要がある名前空間にある属性を設定するにはsetAttribute、適切な名前空間 URI を渡します。

于 2012-10-16T19:35:13.403 に答える