2010-11-18 23 views
2

私はlastconnected要素に私の構成の詳細を追加できるように、私は、次のXML構造を持っている:追加するXML要素と属性

<?xml version="1.0" encoding="utf-8" ?> 
<lastconnectedServers> 
</lastconnectedServers > 

は今、私は追加要素とattributes.For例IのようないくつかのXMLの操作をしたいです上記のXMLに要素を追加したい:(elemetのlastconnectedServers内部):

<Server ip="" domain=""> 
     <SharedFolder name="" type=""/> 
     <SharedFolder name="" type =""/> 
     <SharedFolder name="" type =""/> 
</Server> 

結果のXMLは以下のようなものになりますように:

<?xml version="1.0" encoding="utf-8" ?> 
<lastconnectedServers> 
    <Server ip="" domain=""> 
     <SharedFolder name="" type=""/> 
     <SharedFolder name="" type =""/> 
     <SharedFolder name="" type =""/> 
    </Server> 
</lastconnectedServers > 
0を
+0

libxm2を使用するライブラリは何ですか? –

+0

このような質問を投稿するときは、誰かがあなたのためにすべてのコードを書くのを待つのではなく、すでに試したことを示す必要があります。 –

+0

@ OJ、私はXMLLiteを試しています。 MSXMLが出力パラメータを使用していて、サンプルが全くないために表示される有効なコードがない場合は、完全に認識されませんでした – Simsons

答えて

3

ここにMSXMLを使用したサンプルコードがあります。 COMエラーチェックは省略されています。 COM用のATLヘルパーのために、コードはちょっと読みにくいですが、プログラミングモデルはW3C DOM APIに従います.W3C DOM APIは、XML開発者が非常によく受け入れています。

CComPtr<IXMLDOMDocument2> spDoc; 
CComPtr<IXMLDOMElement> spServerElement, spSharedFolderElement; 
CComPtr<IXMLDOMNode> spServerNode, spLastConnectedServerNode; 
IXMLDOMNode* pInsertedNode; 
VARIANT_BOOL varSucc; 
CComBSTR bstrLastConnected = L"<?xml version=\"1.0\" encoding=\"utf-8\" ?> \ 
           <lastconnectedServers> \ 
           </lastconnectedServers >"; 

spDoc.CoCreateInstance(CLSID_DOMDocument60, NULL, CLSCTX_INPROC_SERVER); 
spDoc->put_async(VARIANT_FALSE); 
spDoc->loadXML(bstrLastConnected, &varSucc); 

// Finds the lastConnectedServerNode node with XPath. 
spDoc->selectSingleNode(CComBSTR(L"/lastconnectedServers"), 
    &spLastConnectedServerNode); 

// Creates and appends Server node. 
spDoc->createElement(CComBSTR(L"Server"), &spServerElement); 
spServerElement->setAttribute(CComBSTR(L"ip"), CComVariant(L"")); 
spServerElement->setAttribute(CComBSTR(L"domain"), CComVariant(L"")); 
spLastConnectedServerNode->appendChild(spServerElement, &pInsertedNode); 

// Creates and appends the first SharedFolder elements. 
spDoc->createElement(CComBSTR(L"SharedFolder"), &spSharedFolderElement); 
spSharedFolderElement->setAttribute(CComBSTR(L"name"), CComVariant(L"")); 
spSharedFolderElement->setAttribute(CComBSTR(L"type"), CComVariant(L"")); 
spServerElement->appendChild(spSharedFolderElement, &pInsertedNode); 

// Creates the second and third SharedFolder elements... 

// Gets the xml content. 
CComBSTR bstrXml; 
spDoc->get_xml(&bstrXml); 

wprintf(L"%s", (LPCWSTR) bstrXml); 

これが役に立ちます。

2
TiXmlDocument doc("YourFile.xml"); 
bool loadOkay = doc.LoadFile(); 

if(loadOkay) 
{ 
    //Variables for XML elements and attributes 
    TiXmlElement *pRoot; 
    //Get root element 
    pRoot = doc.RootElement(); 
      TiXmlElement * server = new TiXmlElement("Server"); // Create the new child element 
      server->LinkEndChild(pRoot);//Links the child to the parent 
      server->setAttribute("ip", ""); // Set attributes 
      server-setAttribute("domain",""); 
      foeach(/*Your Data as Value*/) 
      { 
       TiXmlElement * sharedFolder = new TiXmlElement("SharedFolder"); 
       server->LinkEndChild(sharedFolder); 
       server->setAttribute("name", ""); 
       server-setAttribute("type",""); 
      } 


} 
if(doc.SaveFile("YourOutput.xml")) 
{ 
    return true; 
} 
else 
{ 
    return false; 
} 

これは、新しい子をルート要素に追加できるようにするための基本的な構造です。 TinxyXMLの詳細と使用方法here

関連する問題