Hi,
If you see the documentation you may find that "addNode()" function accepts the relative path. Its is not aware of any level structure.
Now lets say you call root.addNode("x1"); in this case root path is mypage/jcr:content so mypage/jcr:content/x1 gets created.
From here if you want to creates node under mypage/jcr:content/x1 you need to change the reference from which you calling.
Node n = session.getNode("mypage/jcr:content/x1").
Node x2 = n.addNode("x2");
Now this will create a node similar to mypage/jcr:content/x1/x2.
Keep in mind that its relative path to the node from which you are calling it.