Lining up root node and child nodes in JTree

I have a JTree that has a root node and n child nodes. There are no sub-levels - it is structured just like AOL instant messenger. What I want to do is have the child node icons line up directly under the root nodes text. For example (if you can read this), where "-" denotes the icon:
- root
- child
- child
Currently it is something like this:
- root
- child
- child
I have been messing with the setLeftChildIndent( int ) and setRightChildIndent( int ), but they are not doing much...they seem to not want to only move the leaf nodes but all of the nodes, so its not doing exactly what I want.
Any ideas? In the meantime I'll be looking more into how exactly those indent mutators work.
Thanks!

What you want is to do a setRootVisible(false) on the JTree.
All your child nodes are then your "root level" folders.
tree.setRootVisible(true):
+root
+--child1
+--child2
+--child3
+----child3a
+----child3btree.setRootVisible(false):
+child1
+child2
+child3
+--child3a
+--child3b

Similar Messages

  • How to disable selection of root node in JTree

    Hi all! Thanks for taking a minute to read my post!
    I am writing a really basic JTree for showing a list of items.
    Here is some of the code:
    /** Create a basic tree **/
    DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("Title");
    DefaultTreeModel treeModel = new DefaultTreeModel(rootNode);
    JTree tree = new JTree(treeModel);
    /** Method to return the string of the current highlighted selection **/
    public String getSelectionString()
    DefaultMutableTreeNode node =
    tree.getSelectionPath().getLastPathComponent();
    return (String)node.getUserObject();
    I would like to disable selection of the root node of my JTree.
    Thus, if I make a call to getSelectionString() above, it would return null instead of the string that represents the root label.
    I have read the following forum on disabling various TreePaths and TreeNodes in a JTree:
    http://forum.java.sun.com/thread.jsp?forum=57&thread=224691
    This forum suggests implementing the TreeSelectionListener interface and the TreeSelectionModel class and over-riding the addSelectedPath() methods. I tried this suggestion, and I was able to enable and disable the different children of the Jtree, but the root of the JTree would not disable.
    I suppose that I could just simply remove the visibility of the root node, but I really want to avoid that option if possible.
    Wait --- let me be clear ---- I want to disable the selection of the root node only - still allowing selection of all its children.
    Any suggestions?
    Am I missing something really simple here?
    Did I explain my problem clearly?
    Thanks in advance!
    jewels

    simply try this..
    in the
    public void valueChanged(javax.swing.event.TreeSelectionEvent event);
    method of TreeSelectionListener impelentation get the
    TreePath tp = event.getPath();
    from TreePath get the component and then remove the selection from the treePath if it is the node u were checking/root node in this case
    tree.getSelectionModel().removeSelectionPath(tp);
    Try out....

  • Highlight root node in jtree

    When I build my JTree, I have just one single node, the root node. So in order to highlight it, I basically do setSelectionRow(0);, however this is not highlighting the node as if a user clicked it with a mouse, WHEN THE APPLICATION COMES UP.
    Once the application comes up, if I click on that node or for that matter any other node, they get highlighted in blue. It's only upon initialization that this doesn't work.
    Here's a snippet of the sample code:
    tree = new JTree();
    tree.setCellRenderer(new RateManagerTreeCellRenderer());
    I've also tried the setSelectionPath(TreePath path) method without any success. I think that my Custom TreeCellRenderer could be the culprit. If someone could try to duplicate this problem by using the code below of my RateManagerTreeCellRenderer, I would appreciate it.
    public class RateManagerTreeCellRenderer extends DefaultTreeCellRenderer
    private static Color oldColor = Color.BLACK;
    private static Color newColor = Color.BLUE;
    private HashMap iconMap = new HashMap();
    public Component getTreeCellRendererComponent(
              JTree tree, Object value,
              boolean selected, boolean expanded,
              boolean leaf, int row,
              boolean hasFocus)
    super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);
    DefaultMutableTreeNode treeNode = (DefaultMutableTreeNode)value;
    Object userObject = treeNode.getUserObject();
    if (userObject instanceof NameAndID)
    NameAndID nameAndID = (NameAndID)userObject;
    int count = nameAndID.getItemCount();
    if (count > 0 && !selected)
    setForeground(newColor);
    else if (!selected)
    setForeground(oldColor);
    this.setToolTipText(((NameAndID)userObject).toString());
    String type = nameAndID.getType();
    setIcon(type);
    return this;
    }

    Do you mean setting the focus on that node? Or are you talking about some custom painting to put a background behind it? We can't help you much if you don't ask a more specific question with more details about what you're trying to do.

  • Is it possible to set the root node of JTree by default close???? Pls Help

    Hello frnz,
    I am working on JTreeTable and rt now i am facing a problem , in which i have to keep the root of the JTree by default close,
    So please suggest me to do what for this.

    How about
    JTree.collapseRow(0)

  • JTREE: Custom TreeModel does not update non-root nodes

    I have a JTree that uses a custom TreeModel that wraps over (delegates to) a data class X which keeps track of all its children. The class X maintains its own data structure internally (references to other data objects). It also implements 'equals' and 'hashcode' methods. When the data changes in X, it invokes fireTreeStructureChanged on the TreeModel. (There is a TreeModelListener registered with the TreeModel). This works very well for the root node but not for the other non-root nodes. The JTree correctly calls 'equals' and I can see that equals returns 'false' but for non-root nodes the JTree does not refresh though I can see the underlying data structure has changed.
    I am wondering if I may not have fully & correctly implemented fireTreeStructureChanged as it doesn't seem to do much. Or I may be looking at the wrong place. Any pointers would be appreciated.
    BTW, this question is very similar to one asked years earlier http://forums.sun.com/thread.jspa?threadID=153854 but it didn't help me :(
    Thanks.
    ps: working with jdk1.6.0_06 on WinXP.

    I have a same problem. I got an error "Cannot Update Libray".

  • Set JTree root node

    how do i set the root node in JTree, whereas the root node should not be the parameter in the JTree constructor. is there a methode "set root"
    thanks

    hi,
    ((DefaultTreeModel)yourtree.getModel()).setRoot(aTreeNode);

  • Create root node and child nodes while downloading data from internal table

    Hi all,
    i have to down load the details of three materials present in the internal table into
    a  XML file, the material number must be the root node, ERNAM,AENAM,VPSTA
    fields must be its child nodes. in this way i have to display details of three
    materials like material1,material2,material3.
    how can i do that in 4.6c version.
    Thanks,
    satish.

    Hi Satish,
    Please look into the following programs. These are sample SAP programs to deal with XML in 46c.
    BCCIIXMLT1
    BCCIIXMLT2
    BCCIIXMLT3
    Hope these will helps,
    Sumant.

  • Dynamically rename the root node of XML based on the child elements

    Hi Gurus,
    Is there any way to rename the root node of the resultant XML after a mapping based on the child elements.
    For ex:
    consider the following resultant XML after mapping
    <result>
    <element1> </element1>
    <result>
    if the element1 is <type> then the output should be
    <category>
    <type> </type>
    </category>
    elseif the element1 is <character> then the output should be
    <property>
    <character> </character>
    </property>
    Let me know how to do this, either in XSLT or in Graphical mapping.
    Thanks,
    Prabu

    Hi, Prabu:
    In this case, I am suggest you have Src and Tar Message.
    I am suggesting you create another type of message using key / value pair as I suggested, e.g. called Mid Message.
    My solution for you is to have two message mappings:
    1. Src -> Mid
    2. Mid -> Tar.
    In first mapping, you have no control of the structure, but you can map it to Mid structure:
    e.g.
      if Type node Exist, then map 'Type' to Key, as Key/Value can be creatd under a parent node with 0:1 Occurrence.
      saying item.
       in this case, a new item created.
    If you think of this way, any xml file can be represted in this way:
       <Employee>
          <Fname>David</Fname>
          <Lname>Miller</Lname>
       </Employee>  
       <Employee>
          <Fname>Steve</Fname>
          <Lname>Mai</Lname>
       </Employee>   
    Can be interpretd as this way:
       <Employee>
          <Element>
             <key>Fname</Key>
             <value>David</Value>
          </Element>
          <Element>
             <key>Lname</Key>
             <value>Miller</Value>
          </Element>
       </Employee>  
       <Employee>
          <Element>
             <key>Fname</Key>
             <value>Steve</Value>
          </Element>
          <Element>
             <key>Lname</Key>
             <value>Mai</Value>
          </Element>
       </Employee> 
    Now you should understand what I mean.
    In your case target structure have to desgined as following way:
    You need to put Category and Property together with their sub-structure in parallel, make occurence to 0:1
    In your second mapping, you can check the key value is "Type" or "Character", based on which one is true,
    you create corresponding structure: either Categary or Property.
    Regards
    Liang
    Edited by: Liang Ji on Oct 22, 2010 8:31 PM
    Edited by: Liang Ji on Oct 22, 2010 8:35 PM

  • How to Create Instances in the Transient Root Node and Sub Nodes from Root Node Query Method ?

    Hi All,
    I am Creating a BOPF BO with 3 Nodes,
    Node 1) ROOT -- > contains a query,
    using Root Node I have created Search UIBB Configuration in FBI.
    In testing -- > when i enter Data in the Search Criteria Fields am able to get the details in to the query method
    from Imporing parameter : 'IT_SELECTION_PARAMETERS'.
    HERE I am fetching data from a standard table and trying to fill the data in the Node : 'MNR_SEARCH_RESULT'.
    How to Append data to the Sub node 'MNR_SEARCH_RESULT' when there is no Node instance created in the ROOT Node ?
    For This  I have created an instance in the ROOT Node and Using that I tried to create Instance in the Sub Node 'MNR_SEARCH_RESULT'.
    Below is my code which i have placed in the Query method ..
    DATA : LR_DATA TYPE REF TO ZBO_S_ROOT1.
    DATA : LR_SEARCH_RES TYPE REF TO ZBO_S_MNR_SEARCH_RESULT.
    DATA : LO_CI_SERVICE_MANAGER TYPE REF TO /BOBF/IF_TRA_SERVICE_MANAGER,
            LO_TRANSACTION_MANAGER TYPE REF TO /BOBF/IF_TRA_TRANSACTION_MGR.
       LO_CI_SERVICE_MANAGER = /BOBF/CL_TRA_SERV_MGR_FACTORY=>GET_SERVICE_MANAGER( IV_BO_KEY = ZIF_BO_TEST_PO_C=>SC_BO_KEY ).
       LO_TRANSACTION_MANAGER = /BOBF/CL_TRA_TRANS_MGR_FACTORY=>GET_TRANSACTION_MANAGER( ).
    CREATE DATA LR_DATA.
    LR_DATA->KEY = LO_CI_SERVICE_MANAGER->GET_NEW_KEY( ).
    LR_DATA->ROOT_KEY   = IS_CTX-ROOT_NODE_KEY.
    LR_DATA->PIPO_MAT_ID = '100100'.
    LR_DATA->PIPO_MAT_DESC = 'MATERIAL'.
    LR_DATA->PIPO_SPRAS = 'E'.
    LR_DATA->PIPO_MATL_TYPE = 'ZPMI'.
    LR_DATA->PIPO_MATL_GROUP = 'ZKK'.
         DATA lt_mod      TYPE /bobf/t_frw_modification.
         DATA lo_change   TYPE REF TO /bobf/if_tra_change.
         DATA lo_message  TYPE REF TO /bobf/if_frw_message.
         FIELD-SYMBOLS: <ls_mod> LIKE LINE OF lt_mod.
        APPEND INITIAL LINE TO lt_mod ASSIGNING <ls_mod> .
        <ls_mod>-node        =   ZIF_BO_TEST_PO_C=>sc_node-ROOT.
        <ls_mod>-change_mode = /bobf/if_frw_c=>sc_modify_create.
        <ls_mod>-key         = LR_DATA->KEY.
        <ls_mod>-data        = LR_DATA.
    DATA : LT_CHG_FIELDS TYPE /BOBF/T_FRW_NAME.
    DATA : LS_CHG_FIELDS LIKE LINE OF LT_CHG_FIELDS.
    DATA : LV_KEY TYPE /BOBF/CONF_KEY.
    CALL METHOD IO_MODIFY->CREATE
       EXPORTING
         IV_NODE            = ZIF_BO_TEST_PO_C=>sc_node-ROOT
         IV_KEY             = LR_DATA->KEY
         IS_DATA            = LR_DATA
         IV_ROOT_KEY        = IS_CTX-ROOT_NODE_KEY
       IMPORTING
         EV_KEY             = LV_KEY .
    CREATE DATA LR_SEARCH_RES.
    LR_SEARCH_RES->KEY           = LO_CI_SERVICE_MANAGER->GET_NEW_KEY( )..
    LR_SEARCH_RES->PARENT_KEY    = LV_KEY.
    LR_SEARCH_RES->ROOT_KEY    = LV_KEY.
    LR_SEARCH_RES->MATNR    = '123'.
    LR_SEARCH_RES->ERSDA    = SY-DATUM.
    LR_SEARCH_RES->ERNAM    = SY-UNAME.
    **LR_SEARCH_RES->LAEDA    = .
    **LR_SEARCH_RES->AENAM    = .
    **LR_SEARCH_RES->VPSTA    = .
    *LR_SEARCH_RES->LVORM    = .
    LR_SEARCH_RES->MTART    = 'ZPI'.
    LR_SEARCH_RES->MBRSH    = 'ZTP' .
    LR_SEARCH_RES->MATKL    = 'MAT'.
    **LR_SEARCH_RES->BISMT    = ''
    **LR_SEARCH_RES->MEINS    =
    CALL METHOD io_modify->create
               EXPORTING
                 iv_node            = ZIF_BO_TEST_PO_C=>sc_node-MNR_SEARCH_RESULT
                 is_data            = LR_SEARCH_RES
                 iv_assoc_key       = ZIF_BO_TEST_PO_C=>sc_association-root-MNR_SEARCH_RESULT
                 iv_source_node_key = ZIF_BO_TEST_PO_C=>sc_node-root
                 iv_source_key      = LV_KEY
                 iv_root_key        = LV_KEY.
    I am Unable to set data to the Node . I did not get any error message or Dump while executing . when i tried to retrive data I got the details from the node but am unable to view those details in the FBI UI and BOBT UI while testing .
    Please provide your valuable Suggestions.
    Thanks in Adv.
    Thanks ,
    Kranthi Kumar M.

    Hi Kranthi,
    For your requirement you need only two nodes. Root Node and Result node. Use the same structure for both.
    To create Instance while search.
    Create Query method with input type which has the required fields for selection criteria.
    Fetch the data and create instance in the root node.
    Pass the new instance key as exporting parameter form Query Method.
    To Move data from ROOT to Result.
    Create a action at root node.
    Write a code to create new entries in Result node.
    Then configure the Search UIBB and display result in List UIBB. Add button and assign the action MOVE_MAT_2_RESULT.
    Create another List uibb to display data from Result node.
    Connect the UIBBs using wire schema. SEARCH -> LIST(ROOT) ---> LIST(RESULT).
    Give src node association for ROOT to RESULT Configuration.
    Regards,
    Sunil

  • Is it possible to put two different colors in tree parent node background and child nodes background?

    Is it possible to put two different colors in tree parent
    node background and child nodes background?
    Any help will be very helpful.
    Thanks

    Hi PanosE,
    Yes, you can set up another Standard Edition Server in child domain and then deploy pool pairing.
    You need to deploy a new Front End Pool for the new Standard Edition Server.
    A similar case for your reference.
    https://social.technet.microsoft.com/Forums/office/en-US/eca4299c-8edb-481e-b328-c7deba2a79ba/lync-2013-standard-edition-lync-fe-pools-in-multiple-domain-single-forest-senario?forum=lyncdeploy
    Best regards,
    Eric
    Please remember to mark the replies as answers if they help, and unmark the answers if they provide no help. If you have feedback for TechNet Support, contact [email protected]

  • Programmatic, using bean add Parent and child nodes in af:tree dynamically

    Hi All,
    i have to add parent and child nodes dynamically in tree .
    Example :
    i have created a tree like below.On click of button i will get value A ,from pl/sql function i will A1 and A 2 values.which i have to show in pop as tree.
    A
    |-----A1
    |-----A2
    If user clicks on A2.I have to catch A2 value and pass to pl/sql function which gives A2.01 and A2.02 values.
    A
    |-----A1
    |-----A2
    |------A2.01
    |------A2.02.
    A, A1 ,A2,A2.01 ...........values comes from pl/sql funchtion .
    thanks in advance ......... any suggestion will greatly helps

    no use ......................

  • Binding properties of a root node and using fx:include.

    I posted a downloadable example of this here:
    https://dl.dropboxusercontent.com/u/8788282/binding-test.zip
    I've noticed some understandable, but less than perfect behaviour with the way FXML initialization is done when using fx:include.  I find it's difficult to bind properties that belong to the root node of the included view without shooting yourself in the proverbial foot.  Here is an example of what I mean:
    sample.Main
    package sample;
    import javafx.application.Application;
    import javafx.fxml.FXMLLoader;
    import javafx.scene.Parent;
    import javafx.scene.Scene;
    import javafx.stage.Stage;
    public class Main extends Application {
        @Override
        public void start(Stage primaryStage) throws Exception {
            Parent root = FXMLLoader.load(getClass().getResource("MainView.fxml"));
            primaryStage.setTitle("Hello World");
            primaryStage.setScene(new Scene(root, 300, 275));
            primaryStage.show();
        public static void main(String[] args) {
            launch(args);
    sample.MainController
    package sample;
    import javafx.fxml.FXML;
    public class MainController {
        @FXML
        void initialize() {
            System.out.println("MainController initialized.");
    sample.MainView (FXML)
    <?xml version="1.0" encoding="UTF-8"?>
    <?import javafx.scene.control.Label?>
    <?import javafx.scene.layout.*?>
    <AnchorPane prefHeight="200.0" prefWidth="200.0"
                xmlns:fx="http://javafx.com/fxml/1"
                xmlns="http://javafx.com/javafx/2.2"
                fx:controller="sample.MainController">
        <children>
            <VBox prefHeight="200.0" prefWidth="200.0" AnchorPane.bottomAnchor="0.0"
                  AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0"
                  AnchorPane.topAnchor="0.0">
                <children>
                    <Label text="Main"/>
                    <StackPane prefHeight="150.0" prefWidth="200.0"/>
                    <fx:include fx:id="sub" source="SubView.fxml" visible="false"/>
                </children>
            </VBox>
        </children>
    </AnchorPane>
    sample.SubController
    package sample;
    import javafx.beans.binding.Bindings;
    import javafx.fxml.FXML;
    import javafx.scene.control.Label;
    import javafx.scene.layout.AnchorPane;
    public class SubController {
        @FXML
        private AnchorPane anchorPane;
        @FXML
        private Label label;
        @FXML
        void initialize() {
            label.visibleProperty().bind(Bindings.createBooleanBinding(() -> true));
            /* When used as part of an fx:include, this controller's initialize()
             * block is called and the below binding is performed.  After that, any
             * property values set via the containing view (MainView) are applied.
             * In this example, the MainView attempts to set the visible property
             * of this included view (fx:id="sub").  Since the visible property of
             * the root node (anchorPane) has already been bound, the error
             * "A bound value cannot be set." is given.
            anchorPane.visibleProperty().bind(Bindings.createBooleanBinding(() -> true));
            System.out.println("SubController initialized.");
    sample.SubView (FXML)
    <?xml version="1.0" encoding="UTF-8"?>
    <?import javafx.scene.control.Label?>
    <?import javafx.scene.layout.*?>
    <AnchorPane id="AnchorPane" fx:id="anchorPane" maxHeight="-Infinity"
                maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity"
                prefHeight="400.0" prefWidth="600.0"
                xmlns:fx="http://javafx.com/fxml/1"
                xmlns="http://javafx.com/javafx/2.2"
                fx:controller="sample.SubController">
        <children>
            <VBox prefHeight="400.0" prefWidth="600.0" AnchorPane.bottomAnchor="0.0"
                  AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0"
                  AnchorPane.topAnchor="0.0">
                <children>
                    <Label fx:id="label" text="sub view"/>
                </children>
            </VBox>
        </children>
    </AnchorPane>
    The comments in the initialize method of SubController explain what's happening.  I found it a bit confusing until I figured out what was going on.  Should FXMLLoader be checking to see if a property is already bound before trying to set it, at least for nodes declared via fx:include?

    Hi Gaurave,
    We need to show the report like this to some users, thats what the requirement is. Using the Posted nodes option does not help.
    Thanks.

  • Ldif2db command fails to import data and deletes the root node

    ldif2db command fails to import data into LDAP.
    The command used was
    ldif2db -n userRoot -s "dc=example,dc=com" -i test.ldif
    The test.ldif conains the nodes under dc=example,dc-com
    eg: ou=test,dc=example,dc=com
    But on executing the command the root node "dc=example,dc=com" itself got deleted. The console output was like "Skipping entry uid=test001,ou=test,dc=example,dc=com" for all the entries present in ldif.
    What might be the reason for this ? Any clues ?
    The reason y i am trying to do this ldif2db is to preserve the createtimestamp and modifytimestamp while migrating data from one Directory Server to another. Any other ways of doing it ?

    ldif2db is the right command to migrate data and preserve those attributes like createtimestamp and modifytimestamp.
    However, when this command is used, it will first remove everthing before it load whatever you want. So you need to be very careful. I got this terrible problem as well.
    In my experience, if you use this command, don't use "-s". You can just use:
    ldif2db -n suffixName -i test.ldif
    If you only have one suffix (database), then you can use "-n userRoot".
    Also, if you migrate your data from server A to server B, you'd better dump the data using db2ldif -n userRoot -a test.ldif from server A. Then load it into server B using ldif2db -n userRoot -i test.ldif.

  • Add a root node and namespace declaration

    According to the requirement,I have a large appended .txt file.
    This .txt file is created by appending various xml files (without the namespace and root node).
    I need to add a root node and namespace declaration to the large appended .txt file so that it can be read as .xml.
    Please provide the pointers for the same.
    Thanks & Regards,
    Rashi

    My appended file looks like following.
    <input>
       <Store>
          <StoreHeader>
             <StoreNbr>56</StoreNbr>
             <StoreType>Retail</StoreType>
             <StoreSite>2004</StoreSite>
          </StoreHeader>
          <Transactions>
             <Transaction>
                <Item>A</Item>
                <ItemPrice>4</ItemPrice>
             </Transaction>
             <Transaction>
                <Item>C</Item>
                <ItemPrice>56</ItemPrice>
             </Transaction>
          </Transactions>
       </Store>
    </input>
    <input>
       <Store>
          <StoreHeader>
             <StoreNbr>123</StoreNbr>
             <StoreType>Retail</StoreType>
             <StoreSite>2004</StoreSite>
          </StoreHeader>
          <Transactions>
             <Transaction>
                <Item>A</Item>
                <ItemPrice>4</ItemPrice>
             </Transaction>
             <Transaction>
                <Item>B</Item>
                <ItemPrice>8</ItemPrice>
             </Transaction>
             <Transaction>
                <Item>C</Item>
                <ItemPrice>56</ItemPrice>
             </Transaction>
          </Transactions>
       </Store>
    </input>
    Now according to the requirement, I need to add namespace and root node and make it like follows:
    <ns0:output xmlns:ns0="http://xxx">
       <input>
       <Store>
          <StoreHeader>
             <StoreNbr>56</StoreNbr>
             <StoreType>Retail</StoreType>
             <StoreSite>2004</StoreSite>
          </StoreHeader>
          <Transactions>
             <Transaction>
                <Item>A</Item>
                <ItemPrice>4</ItemPrice>
             </Transaction>
             <Transaction>
                <Item>C</Item>
                <ItemPrice>56</ItemPrice>
             </Transaction>
          </Transactions>
       </Store>
    </input>
    <input>
       <Store>
          <StoreHeader>
             <StoreNbr>123</StoreNbr>
             <StoreType>Retail</StoreType>
             <StoreSite>2004</StoreSite>
          </StoreHeader>
          <Transactions>
             <Transaction>
                <Item>A</Item>
                <ItemPrice>4</ItemPrice>
             </Transaction>
             <Transaction>
                <Item>B</Item>
                <ItemPrice>8</ItemPrice>
             </Transaction>
             <Transaction>
                <Item>C</Item>
                <ItemPrice>56</ItemPrice>
             </Transaction>
          </Transactions>
       </Store>
    </input>
    </ns0:output>

  • Change the Namespace and Root Node Name

    Hi,
    I have following xml :
    <ns2:Students xmlns:ns2="http://MyProject.CommonSchema">
        <ns2:Student>
          <HeaderSegment>
            <FName>AA</FName>
            <LName>AA</LName>
          </HeaderSegment>
        </ns2:Student>
      </ns2:Students>
    Now I want to change the root node name and namespace name.
    I want the following output:
    <ns2:MyStudents xmlns:ns2="http://MyProject.MySchema">
        <ns2:Student>
          <HeaderSegment>
            <FName>AA</FName>
            <LName>AA</LName>
          </HeaderSegment>
        </ns2:Student>
      </ns2:Students>
    I searched on the google but not found any right solution.
    Any kind of help would be appreciated.
    Prakash

    You should have told us that you wanted an XmlDocument. Anyway, you could use a XDocument to create and modify the XML and then return an XmlDocument like this:
    public static XmlDocument CreateXmlDocument(string xml) {
    //load the XML data
    XDocument doc = XDocument.Parse(xml); //or use XDocument.Load to load a file
    //change from old to the new namespace:
    XNamespace newNs = "http://MyProject.MySchema";
    var elemens = doc.Root.Elements();
    foreach (var elem in doc.Root.Elements()) {
    if (elem.Name.Namespace != string.Empty) {
    elem.Name = newNs + elem.Name.LocalName;
    //remove old namespace attribute:
    XAttribute atr = doc.Root.Attributes(XNamespace.Xmlns + "ns2").FirstOrDefault();
    if (atr != null)
    atr.Remove();
    //add the new namespace
    doc.Root.Add(new XAttribute(XNamespace.Xmlns + "ns2", newNs));
    doc.Root.Name = newNs + "Students2";
    string newXml = doc.ToString();
    XmlDocument xmlDocument = new XmlDocument();
    using (var xmlReader = doc.CreateReader()) {
    xmlDocument.Load(xmlReader);
    return xmlDocument;
    Usage:
    string xml = "<ns2:Students xmlns:ns2=\"http://MyProject.CommonSchema\"><ns2:Student><HeaderSegment><FName>AA</FName><LName>AA</LName></HeaderSegment></ns2:Student></ns2:Students>";
    XmLDocument doc = CreateXmlDocument(xml);
    Please remember to close your threads by marking all helpful posts as answer and then start a new thread if you have a new question.

Maybe you are looking for