QT5 xml 删除节点用removeChild方法,删除之后xml文件有残留

1.第一次提问,我用file.open(QIODevice::ReadWrite | QIODevice::Text))的方式打开的文件。
然后我想删除xml文件里面的一个节点的所有子节点,但删完之后每次都有残留,如下图:
图片说明

2.我的代码如下:

        while (FilePath.hasChildNodes())
        {
            FilePath.removeChild(FilePath.lastChild());
        }

3.穷学生实习没币充会员,求高手帮我解答,非常感谢。

Mark_1995
Mark_1995 感觉应该是文件打开方式有问题
11 个月之前 回复

1个回答

我明白了,就是文件打开方式有问题,删除节点之后xml文件变小,原本xml尾部的字符并不会随之往前移,而是保留在原位置,所以导致删了之后尾部有残留
应该以truncate和writeOnly的方式打开

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
编辑XML文件(删除节点并添加新节点)

<div class="post-text" itemprop="text"> <p>I have problems to deal with XML in PHP. What i want is to remove a not needed element and replace it with a other one.</p> <p>Let's say the XML looks like this:</p> <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;software&gt; &lt;info&gt; &lt;version&gt;1.2&lt;/version&gt; &lt;lasterror&gt;1386680712&lt;/lasterror&gt; &lt;/info&gt; &lt;decryption&gt; &lt;funcgroup siglength="86"&gt; &lt;func&gt; &lt;name&gt;Mk&lt;/name&gt; &lt;args&gt;$a&lt;/args&gt; &lt;code&gt;XXXX&lt;/code&gt; &lt;/func&gt; &lt;func&gt; &lt;name&gt;Nk&lt;/name&gt; &lt;args&gt;$a,$b&lt;/args&gt; &lt;code&gt;XXXX&lt;/code&gt; &lt;/func&gt; &lt;/funcgroup&gt; &lt;/decryption&gt; &lt;/software&gt; </code></pre> <p>PHP Code:</p> <pre><code>$domtree = new DOMDocument('1.0', 'UTF-8'); $domtree-&gt;loadXML(file_get_contents('test.xml')); $thedocument = $domtree-&gt;documentElement; $list = $thedocument-&gt;getElementsByTagName('funcgroup'); foreach ($list as $domElement) { $sig_length = $domElement-&gt;getAttribute('siglength'); if($sig_length == $signature_length) { $domElement-&gt;parentNode-&gt;removeChild($domElement); break; } } $some_stuff = $domtree-&gt;getElementsByTagName('software'); $some_stuff = $domtree-&gt;getElementsByTagName('decryption'); $funcgroup = $domtree-&gt;appendChild($domtree-&gt;createElement('funcgroup')); $funcgroup-&gt;setAttribute('siglength', $signature_length); $func = $funcgroup-&gt;appendChild($domtree-&gt;createElement('func')); $func-&gt;appendChild($domtree-&gt;createElement('name', $outer_element[0])); $func-&gt;appendChild($domtree-&gt;createElement('args', $outer_element[1])); $code = $func-&gt;appendChild($domtree-&gt;createElement('code')); $code-&gt;appendChild($domtree-&gt;createTextNode($outer_element[2])); </code></pre> <p>Note: I removed some stuff otherwise it would get too complicated i guess. The above code shows what i do, but without some other loops and variables which are not needed in that question. Every variable (and array) is defined. So don't worry about that.</p> <p>What i want is to remove the whole <code>&lt;funcgroup siglength="86"&gt;</code> in order to replace it with a different one.</p> <p>The script works fine, but there is one problem in the output XML. It looks like this:</p> <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;software&gt; &lt;info&gt; &lt;version&gt;6.3&lt;/version&gt; &lt;lasterror&gt;1386680712&lt;/lasterror&gt; &lt;/info&gt; &lt;decryption/&gt; &lt;/software&gt; &lt;funcgroup siglength="86"&gt; &lt;func&gt; &lt;name&gt;Nk&lt;/name&gt; &lt;args&gt;$a&lt;/args&gt; &lt;code&gt;YYYYY&lt;/code&gt; &lt;/func&gt; &lt;func&gt; &lt;name&gt;Ok&lt;/name&gt; &lt;args&gt;$a,$b&lt;/args&gt; &lt;code&gt;YYYY&lt;/code&gt; &lt;/func&gt; &lt;/funcgroup&gt; </code></pre> <p>As you can see, the closing <code>software</code> and <code>decryption</code> tags are on the wrong place now.</p> <p>How can i fix that? I spent hours but can't find a working solution.</p> <p>The problem is caused by the <code>removeChild()</code> since it works fine if i do not remove something. </p> </div>

MSXML更改xml是removechild方法成功,但xml文件中数据还存在

CoInitialize(NULL) ; //得到整个xml文档 MSXML2::IXMLDOMDocumentPtr pDoc ; HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument30)) ; if(FAILED(hr)) { return ; } pDoc->load((LPCTSTR)xmlpath) ; //得到根节点 MSXML2::IXMLDOMElementPtr pRoot ; pRoot = pDoc->GetdocumentElement() ; //所有子节点 MSXML2::IXMLDOMNodeListPtr pNodes ; pNodes = pRoot->GetchildNodes() ; int personNumber = pNodes->Getlength() ; MSXML2::IXMLDOMNodePtr pNode ;//根节点下的节点 MSXML2::IXMLDOMNodePtr pNodeAtt ;//根节点下所有节点的所有属性 MSXML2::IXMLDOMNamedNodeMapPtr pNamedNodeMap ; for(int i=0;i<personNumber;i++) { pNode = pNodes->Getitem(i) ; pNamedNodeMap = pNode->Getattributes() ; pNodeAtt = pNamedNodeMap->Getitem(type) ; //判断是否有节点的某个属性是否与所找的数据相同,如果有,则删除该节点 if((CString)(pNodeAtt->GetnodeTypedValue().bstrVal) == person) { HRESULT hr = pRoot->removeChild(pNode) ; if(FAILED(hr)) break ; personNumber = personNumber-1; } } pDoc.Release() ; pRoot.Release() ; pNodes.Release() ; pNode.Release() ; pNodeAtt.Release() ; return ;

从xml文件中删除节点

<div class="post-text" itemprop="text"> <p>I have an xml file </p> <pre><code>&lt;?xml version="1.0"?&gt; &lt;category&gt; &lt;name&gt;SWEATERS&lt;/name&gt; &lt;name&gt;WATCHES&lt;/name&gt; &lt;name&gt;PANTS&lt;/name&gt; &lt;name&gt;test&lt;/name&gt; &lt;name&gt;1&lt;/name&gt; &lt;/category&gt; </code></pre> <p>How i can remove the node <code>&lt;name&gt;test&lt;/name&gt;</code> using xpath ,xquery and php. I used this code </p> <pre><code> $name='test; $xmlfile="config/shop_categories.xml"; $xml = simplexml_load_file($xmlfile); $target = $xml-&gt;xpath('/category[name="'.trim($name).'"]'); print_r($target[0]); if($target == false) return; $domRef = dom_import_simplexml($target[0]); //Select position 0 in XPath array $domRef-&gt;parentNode-&gt;removeChild($domRef); $dom = new DOMDocument('1.0'); $dom-&gt;preserveWhiteSpace = false; $dom-&gt;formatOutput = true; $dom-&gt;loadXML($xml-&gt;asXML()); $dom-&gt;save($xmlfile); </code></pre> <p>But it is not working.</p> </div>

PHP removeChild仅删除3个元素中的2个[重复]

<div class="post-text" itemprop="text"> <div class="question-status question-originals-of-duplicate"> <p>This question already has an answer here:</p> <ul> <li> <a href="/questions/36910558/domdocument-removechild-in-foreach-reindexing-the-dom" dir="ltr">DomDocument removeChild in foreach reindexing the dom</a> <span class="question-originals-answer-count"> 4 answers </span> </li> </ul> </div> <p>I'm new to PHP so let me apologize in advance. I have been working at parsing an XML, I have pretty much everything working thanks to articles here but I am seeing some odd behavior when deleting elements from my XML.</p> <p>I have pulled an XML from a web service and it is working great, now I need to delete every instance of an element, XPath has proved to be a challenge (for me) so now I have this:</p> <pre><code>$idlist = $dom2-&gt;getElementsByTagName('ELEMENTID'); foreach ($idlist as $id) { print "&lt;!--"."Removing Node ".$id-&gt;nodeName."=".$id-&gt;nodeValue."--&gt;"; //$id-&gt;parentNode-&gt;removeChild($id); } </code></pre> <p>The reason my print is as an XML comment is that I am generating an XML output file.</p> <p>Now, my XML contains three elements that match i.e. 123 - when I have the code as shown it prints out the nodeName and nodeValue of all three. However, if I uncomment the removeChild line things get weird, it deletes the first and third matching elements but not the second one.</p> <p>Hopefully my explanation is somewhat clear, is there something about removeChild() that might cause it to react in this way?</p> <p>Thanks, Chris. </p> </div>

从`SimpleXMLElement Object`中删除节点

<div class="post-text" itemprop="text"> <p><code>XMl</code> like below,</p> <pre><code>&lt;text font-family="Helvetica" font-size="25" style="stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(0,0,0); fill-rule: nonzero; opacity: 1;" &gt; &lt;tspan x="-100" y="7.87" style="stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;"&gt;t&lt;/tspan&gt; &lt;tspan x="-93" y="7.87" style="stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;"&gt;e&lt;/tspan&gt; &lt;tspan x="-79" y="7.87" style="stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;"&gt;s&lt;/tspan&gt; &lt;tspan x="-66" y="7.87" style="stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;"&gt;t&lt;/tspan&gt; &lt;/text&gt; </code></pre> <p>What i want to do is, keep first <code>tspan</code> and append all other <code>tspan</code> value on first <code>tspan</code> and remove all other.</p> <p>He is the desired output,</p> <pre><code>&lt;text font-family="Helvetica" font-size="25" style="stroke: none; stroke-width: 1; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; fill: rgb(0,0,0); fill-rule: nonzero; opacity: 1;" &gt; &lt;tspan x="-100" y="7.87" style="stroke: none; stroke-width: 0; stroke-dasharray: none; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 4; fill: rgb(0,0,0); fill-rule: ; opacity: 1;"&gt;test&lt;/tspan&gt; &lt;/text&gt; </code></pre> <p>For this what i did,</p> <pre><code>$previousValue = null; $first = $text-&gt;tspan[0]; foreach($text-&gt;tspan as $k2=&gt;$span){ if(is_object($span)){ $style = $span-&gt;attributes()-&gt;style; if($previousValue) { if(strcmp($style,$previousValue) === 0){ $first.=$span; //$dom=dom_import_simplexml($span); $dom-&gt;parentNode-&gt;removeChild($dom); } } $previousValue = $style; } } $text-&gt;tspan[0] = $first; </code></pre> <p>That will generate first node perfect, but not removing other nodes proper. I tried this even,</p> <pre><code>$dom=dom_import_simplexml($span); $dom-&gt;parentNode-&gt;removeChild($dom); </code></pre> <p>But it just removing 1 node and break the loop then. Dont know what happening there. Am i doing any mistake there?</p> </div>

关于JS删除父节点的问题

有若干个一样的这样的table table tr td input type="checkbox" name="test" /td /tr /table 现在需要做的就是通过JS把所有选中的checkbox所在的table删除 我是这么写的,但是当选项是多个的时候不能删除完,只能删除一部分: var boxs = document.getElementsByName("test"); for(var i = o;i<boxs.length;i++){ if(boxs[i].checked){ var obj = boxs[i].parentNode.parentNode.parentNode; obj.parentNode.removeChild(obj); } } 请问哪里不对?或者说有什么其他的解决方案。希望知道的帮忙看下

如何删除XML元素和所有子元素?

<div class="post-text" itemprop="text"> <p>I need to read an <code>XML</code> file and delete all the elements named <code>&lt;images&gt;</code> and all the children associated. I have found similar old questions that did not work. What am I doing wrong? Is there a better method?</p> <p><code>XML:</code></p> <pre><code>&lt;?xml version='1.0' encoding='UTF-8'?&gt; &lt;settings&gt; &lt;background_color&gt;#000000&lt;/background_color&gt; &lt;show_context_menu&gt;yes&lt;/show_context_menu&gt; &lt;image&gt; &lt;thumb_path&gt;210x245.png&lt;/thumb_path&gt; &lt;big_image_path&gt;620x930.png&lt;/big_image_path&gt; &lt;/image&gt; &lt;image&gt; &lt;thumb_path&gt;200x295.png&lt;/thumb_path&gt; &lt;big_image_path&gt;643x950.png&lt;/big_image_path&gt; &lt;/image&gt; &lt;/settings&gt; </code></pre> <p><code>PHP:</code></p> <pre><code>$dom = new DOMDocument(); $dom-&gt;load('test.xml'); $thedocument = $dom-&gt;documentElement; $elements = $thedocument-&gt;getElementsByTagName('image'); foreach ($elements as $node) { $node-&gt;parentNode-&gt;removeChild($node); } $save = $dom-&gt;saveXML(); file_put_contents('test.xml', $save) </code></pre> </div>

C# xpath SelectNode匹配到的节点找不到父节点

想删除xpath匹配到的节点,就需要父节点的RemoveChild方法,但是xpath匹配到的节点找不到其父节点,其父节点也找不到它。 ``` public int Delete(string where="") { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(path); XmlElement root = xmlDoc.DocumentElement; XmlNodeList recordNodes; if (where == "") recordNodes = root.GetElementsByTagName("record"); else { string xpath = "/data" + "/record[" + where + "]/*/parent::*"; recordNodes = root.SelectNodes(xpath); } while (recordNodes.Count > 0)//一边删索引会跟着变,所以用while { root.RemoveChild((XmlElement)recordNodes[0]); //((XmlElement)recordNodes[0]).ParentNode.RemoveChild(recordNodes[0]); } xmlDoc.Save(path); return recordNodes.Count; } ``` ![图片说明](https://img-ask.csdn.net/upload/201804/07/1523111208_335470.png) 注释掉的部分parentNode会报空指针异常 怎么找到父节点,或者怎么删除selectNode(xpath)匹配到的节点

PHP:按属性从xml中删除节点

<div class="post-text" itemprop="text"> <p>suppose I have an xml like this:</p> <pre><code>&lt;products&gt; &lt;product id="1"&gt; &lt;name&gt;aaa&lt;/name&gt; &lt;producturl&gt;aaa&lt;/producturl&gt; &lt;bigimage&gt;aaa&lt;/bigimage&gt; &lt;description&gt;aaa&lt;/description&gt; &lt;price&gt;aaa&lt;/price&gt; &lt;categoryid1&gt;aaa&lt;/categoryid1&gt; &lt;instock&gt;aaa&lt;/instock&gt; &lt;/product&gt; &lt;product id="2"&gt; &lt;name&gt;aaa&lt;/name&gt; &lt;producturl&gt;aaa&lt;/producturl&gt; &lt;bigimage&gt;aaa&lt;/bigimage&gt; &lt;description&gt;aaa&lt;/description&gt; &lt;price&gt;aaa&lt;/price&gt; &lt;categoryid1&gt;aaa&lt;/categoryid1&gt; &lt;instock&gt;aaa&lt;/instock&gt; &lt;/product&gt; &lt;/products&gt; </code></pre> <p>and I need to delete certain node depending on the id attribute, if this attribute is in an array.</p> <p>I've tried different ways, but the xml is outputted always as the original one!</p> <p>My code so far:</p> <pre><code>&lt;?php header("Content-type: text/xml"); $url="http://www.aaa.it/aaa.xml"; $url=file_get_contents($url); $array=array("1","4","5"); $doc=new SimpleXMLElement($url); foreach($doc-&gt;product as $product){ if(!in_array($product['id'],$array)){ $dom=dom_import_simplexml($product); $dom-&gt;parentNode-&gt;removeChild($dom); // unset($doc-&gt;product-&gt;$product); } } echo $doc-&gt;asXml(); ?&gt; </code></pre> <p>Thanks a lot everyone.</p> </div>

如何在php中获取xml节点的属性值?

<div class="post-text" itemprop="text"> <p>I'm using simplexml to read a xml file. So far i'm unable to get the attribute value i'm looking for. this is my code.</p> <pre><code> if(file_exists($xmlfile)){ $doc = new DOMDocument(); $doc-&gt;load($xmlfile); $usergroup = $doc-&gt;getElementsByTagName( "preset" ); foreach($usergroup as $group){ $pname = $group-&gt;getElementsByTagName( "name" ); $att = 'code'; $name = $pname-&gt;attributes()-&gt;$att; //not working $name = $pname-&gt;getAttribute('code'); //not working if($name==$preset_name){ echo($name); $group-&gt;parentNode-&gt;removeChild($group); } } } </code></pre> <p>and my xml file looks like</p> <pre><code>&lt;presets&gt; &lt;preset&gt; &lt;name code="default"&gt;Default&lt;/name&gt; &lt;createdBy&gt;named&lt;/createdBy&gt; &lt;icons&gt;somethignhere&lt;/icons&gt; &lt;/preset&gt; &lt;/presets&gt; </code></pre> </div>

PHP和XML-删除节点

<div class="post-text" itemprop="text"> <p>I have created a PHP script which builds a table from an XML document via AJAX. For example:</p> <pre><code>&lt;bookstore&gt; &lt;book&gt; &lt;title&gt;Everyday Italian&lt;/title&gt; &lt;author&gt;Giada De Laurentiis&lt;/author&gt; &lt;year&gt;2005&lt;/year&gt; &lt;price&gt;30.00&lt;/price&gt; &lt;/book&gt; &lt;book&gt; &lt;title&gt;Harry Potter&lt;/title&gt; &lt;author&gt;J K. Rowling&lt;/author&gt; &lt;year&gt;2005&lt;/year&gt; &lt;price&gt;29.99&lt;/price&gt; &lt;/book&gt; &lt;/bookstore&gt; </code></pre> <p>Would create a table with title, author, year and price columns plus an additional delete colum. When parsing the XML I have set the tr id to be that of the current XML element (0 and 1) in the case above. </p> <p>When I click delete I fire off an AJAX request with the ID of the row I want to delete. The delete script is receiving the current row number without problem but I am having strange results when trying to delete it. The current code I'm trying is below (taken from <a href="http://quest4knowledge.wordpress.com/2010/09/04/php-xml-create-add-edit-modify-using-dom-simplexml-xpath/" rel="nofollow">http://quest4knowledge.wordpress.com/2010/09/04/php-xml-create-add-edit-modify-using-dom-simplexml-xpath/</a> 7.2)</p> <pre><code>if (isset($_POST['rowNumber'])) { $rowNumber = $_POST['rowNumber']; $file = $_POST['file']; $dom = new DOMDocument(); $dom-&gt;load("../XML/".$file); $xml = $dom-&gt;documentElement; //PROBLEM HERE $xml-&gt;childNodes-&gt;item(0)-&gt;parentNode-&gt;removeChild($xml-&gt;childNodes-&gt;item($rowNumber)); $handle = fopen("../XML/".$file, 'w'); fwrite($handle, $dom-&gt;saveXML()); } </code></pre> <p>I build the table on page load and then on every deletion. Trouble is that the incorrect rows are being deleted and I can't figure out why.</p> <p><em><strong>ADDITIONAL TESTING...</strong></em></p> <p>Deletes the first node on 50% of clicks:</p> <pre><code>$xml-&gt;childNodes-&gt;item(0)-&gt;parentNode-&gt;removeChild($xml-&gt;childNodes-&gt;item(0)); </code></pre> <p>Always deletes the first node:</p> <pre><code>$xml-&gt;childNodes-&gt;item(0)-&gt;parentNode-&gt;removeChild($xml-&gt;childNodes-&gt;item(1)); </code></pre> <p>Deletes the second node on 50% of clicks:</p> <pre><code>$xml-&gt;childNodes-&gt;item(0)-&gt;parentNode-&gt;removeChild($xml-&gt;childNodes-&gt;item(2)); </code></pre> <p>Always deletes the second node:</p> <pre><code>$xml-&gt;childNodes-&gt;item(0)-&gt;parentNode-&gt;removeChild($xml-&gt;childNodes-&gt;item(3)); </code></pre> <p>Deletes the third node on 50% of clicks:</p> <pre><code>$xml-&gt;childNodes-&gt;item(0)-&gt;parentNode-&gt;removeChild($xml-&gt;childNodes-&gt;item(4)); </code></pre> <p>Always deletes the third node:</p> <pre><code>$xml-&gt;childNodes-&gt;item(0)-&gt;parentNode-&gt;removeChild($xml-&gt;childNodes-&gt;item(5)); </code></pre> <p><em><strong>ADDED MY AJAX CODE</strong></em></p> <pre><code>$('#generatedTable a.delete').live('click', function (e) { e.preventDefault(); //TABLE ROW ID TO BE DELETED. CAN ALERT THIS FINE. var trID = $(this).closest('tr').attr('id'); $.ajax({ url: "functions/xmlDelete.php", type: "POST", dataType: "json", data: "rowNumber="+ trID + "&amp;fileName=" + fileName, success: function(data) { $.ajax({ url: "functions/xmlParser.php", type: "POST", dataType: "json", data: "fileName="+ fileName, success: function(data) { $('#xmlTable').html(data.table); $('#xmlTable').fadeIn('fast'); oTable = $('#generatedTable').dataTable({ "bJQueryUI": true, "bPaginate": false, "bLengthChange": false, "bFilter": false, "bSort": false, "bInfo": true }); } }); } }); } ); </code></pre> <p>This is what my table rows look like and I can alert the trID without problem.</p> <pre><code>&lt;tr id="0" class="odd"&gt; &lt;td id="0"&gt;1999 Grammy Nominees&lt;/td&gt; &lt;td id="1"&gt;Many&lt;/td&gt; &lt;td id="2"&gt;USA&lt;/td&gt; &lt;td id="3"&gt;Grammy&lt;/td&gt; &lt;td id="4"&gt;10.20&lt;/td&gt; &lt;td id="5"&gt;1999&lt;/td&gt; &lt;td align="center"&gt;&lt;a class="edit" href=""&gt;Edit&lt;/a&gt;&lt;/td&gt; &lt;td align="center"&gt;&lt;a class="delete" href=""&gt;Delete&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt; </code></pre> <p>Can anyone help explain what I'm seeing here. Thanks!</p> </div>

如何使用PHP从xml中的节点中提取特定标记?

<div class="post-text" itemprop="text"> <p>Here is where I set up basic variables, such as creating the new DomDoc and such as well as loading some of the Tags. This all works fine at the moment.</p> <pre><code> &lt;?php if (isset($_GET['edit'])&amp;&amp; $_GET['edit']=='delete' &amp;&amp; isset($_GET['id'])&amp;&amp;!empty($_GET['id'])){ $dom = new DomDocument(); $dom-&gt;preserveWhiteSpace = false; $dom-&gt;load("data.xml"); $root = $dom-&gt;documentElement; $record = $root-&gt;getElementsByTagName("data"); $ID=$root-&gt;getElementsByTagName("ID"); $nodetoremove = null; //$namenode=$root-&gt;getElementsByTagName("own_name"); //$name=""; //$datenode=$root-&gt;getElementsByTagName("sign_in"); //$date=""; $newid=$_GET['id']; foreach($ID as $node){ $pid =$node-&gt;textContent; </code></pre> <p>Here I am checking if it's a new ID and if it is it does the following as seen. </p> <pre><code> if ($pid == $newid) { $nodetoremove=$node-&gt;parentNode; } } </code></pre> <p>The issue is here. I am able to go through the selected node I wish to delete ($nodetoremove) and select a specific element (sign_in) but I am unsure how to so. Right now all I can do is go through and print all of the elements within the nodes of $nodetoremove. Is there a way I can get the element I want from XML this way?</p> <pre><code> //Prints all information within $nodetoremove foreach ($nodetoremove-&gt;childNodes AS $item){ print $item-&gt;nodeName . "=" . $item-&gt;nodeValue . "&lt;br&gt;"; } foreach ($nodetoremove as $node) { } //Sets $name to the first Child of $nodetoremove $name=$nodetoremove-&gt;firstChild-&gt;nodeValue; //Checks if the nods to remove is not null, if it is removes $nodetoremove if($nodetoremove!=null){ $root-&gt;removeChild($nodetoremove); ?&gt; </code></pre> </div>

在js如何引用用removeChild删掉的节点的html代码

在js如何引用用removeChild删掉的节点的html代码

PHP按属性删除XML节点

<div class="post-text" itemprop="text"> <p>Have tried numerous examples on SO but none have worked.</p> <p>Goal: Remove a node (<em>unit</em>) and it's children, by specific <em>id=</em></p> <p><strong>filename.xml</strong></p> <pre><code>&lt;archive&gt; &lt;unit id="0424670018"&gt; &lt;data&gt;Blah blah blah #1&lt;/data&gt; &lt;gdate&gt;2018-05-28 00:42:46&lt;/gdate&gt; &lt;/unit&gt; &lt;unit id="0450170018"&gt; &lt;data&gt;Blah blah blah #2&lt;/data&gt; &lt;gdate&gt;2018-05-28 00:45:01&lt;/gdate&gt; &lt;/unit&gt; &lt;/archive&gt; </code></pre> <p>Code used, not sure why it does not work when loaded:</p> <pre><code>$id = '0450170018'; $file = 'filename.xml'; $xml = simplexml_load_string($file); foreach($xml-&gt;archive as $fileload){ if($fileload-&gt;unit['@id'] == $id){ $dom = dom_import_simplexml($fileload); $dom-&gt;parentNode-&gt;removeChild($dom); } } </code></pre> </div>

如果xml节点没有子节点且为空,则如何删除它

<div class="post-text" itemprop="text"> <p>I am creating xml nodes with conditions and want to delete a node if it is having no child nodes:</p> <pre><code>&lt;main&gt; &lt;tags&gt; &lt;tag&gt;&lt;/tag&gt; &lt;tag&gt;hello&lt;/tag&gt; &lt;tag&gt;hello1&lt;/tag&gt; &lt;/tags&gt; &lt;/main&gt; </code></pre> <p>I want this output before saving the xml:</p> <pre><code>&lt;main&gt; &lt;tags&gt; &lt;tag&gt;hello&lt;/tag&gt; &lt;tag&gt;hello1&lt;/tag&gt; &lt;/tags&gt; &lt;/main&gt; </code></pre> <p>please ignore node names : if I delete it is deleting but end tag is not removed like <code>&lt;/tag&gt;</code> is still present after remove:</p> <pre><code>$doc = new DOMDocument; $doc-&gt;load($path); $element = $doc-&gt;documentElement; $elementtodelete = $element-&gt;getElementsByTagName('OthersInc')-&gt;item(0); if(! $elementtodelete-&gt;hasChildNodes()) { $oldelement = $elementtodelete-&gt;parentNode-&gt;removeChild($elementtodelete); } </code></pre> </div>

在PHP中删除XML节点

<div class="post-text" itemprop="text"> <pre><code> $xmldoc = new DOMDocument(); $xmldoc-&gt;load('card.xml'); $root = $xmldoc-&gt;documentElement; $fnode = $root-&gt;firstChild; // we retrieve the chapter and remove it from the book $items = $xmldoc-&gt;getElementsByTagName('card'); foreach ($items as $item){ $node = $item-&gt;getElementsByTagName('cardnumber')-&gt;item(0); if ($node-&gt;nodeValue == $this-&gt;cardnumber){ $node-&gt;parentNode-&gt;removeChild($node); $xmldoc-&gt;saveXML(); } } </code></pre> <p>Above is the code I used to delete the card node if the card number is match, below is my XML format. But if failed to remove the card. Can anyone help?</p> <pre><code>&lt;root&gt; &lt;card&gt; &lt;cardnumber&gt;12345&lt;/cardnumber&gt; &lt;name&gt;Tan&lt;/name&gt; &lt;/card&gt; .... &lt;/root&gt; </code></pre> </div>

如何从大型XML文件中删除所有注释? [关闭]

<div class="post-text" itemprop="text"> <p>How can I remove all comments from a large XML file? </p> <p>I have a large file XML and I want to thin it and I want to remove all the comments. The file has a size of over 200 mb and it takes a lot to parse the file and query something.</p> <p>Code for parse is :</p> <pre><code>&lt;?php $dom = new DOMDocument(); $xpath = new DOMXPath($dom); $reader = new XMLReader(); $reader-&gt;open('http://www.bookingassist.ro/test/HotelsPro.xml'); while ($reader-&gt;read()) { if ($reader-&gt;nodeType == XMLReader::ELEMENT &amp;&amp; $reader-&gt;name == 'Hotel') { $node = $dom-&gt;importNode($reader-&gt;expand(), true); $dom-&gt;appendChild($node); $result = $xpath-&gt;evaluate('string(self::Hotel[HotelCode = "'.$hotelCodes[3].'"]/HotelImages/ImageURL[1])', $node); $dom-&gt;removeChild($node); if ($result) { echo $result; } } } ?&gt; </code></pre> </div>

删除子元素的一个小问题

我想要删除某个父元素下的某一类子元素:如下程序: <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>删除子元素</title> <style type="text/css"> .box{border:1px solid red;width:150px;height:150px;float:left;margin:20px 10px 0 20px;} </style> </head> <body> <div id="wrap"> <div class="box"></div> <div class="box"></div> <div class="box"></div> </div> <br /> <button onclick="dele()">删除box</button> <script type="text/javascript"> function dele(){ var parent=document.getElementById("wrap"); var box=document.getElementsByClassName("box"); alert(box.length); //明明是三怎么只能删除两个盒子 for(var i=0;i<box.length;i++){ console.log(i); parent.removeChild(box[i]); } } </script> </body> </html> 本来应该三个box都删除,可就是只能删除两个,这是什么样原因呢,弄了我一下午了,纠结,求解!谢谢

通过选择值删除XML dom doc上的节点

<div class="post-text" itemprop="text"> <p>Trying to make an API for currency conversion,</p> <p>Need to select a specific currency and delete it from the xml file...</p> <p>XML file looks like this:</p> <pre><code>&lt;currencies&gt; &lt;currency&gt; &lt;ccode&gt;CAD&lt;/ccode&gt; &lt;cname&gt;Canadian Dollar&lt;/cname&gt; &lt;cntry&gt;Canada&lt;/cntry&gt; &lt;/currency&gt; &lt;currency&gt; &lt;ccode&gt;CHF&lt;/ccode&gt; &lt;cname&gt;Swiss Franc&lt;/cname&gt; &lt;cntry&gt;Liechtenstein, Switzerland&lt;/cntry&gt; &lt;/currency&gt; &lt;currency&gt; &lt;ccode&gt;CNY&lt;/ccode&gt; &lt;cname&gt;Yuan Renminbi&lt;/cname&gt; &lt;cntry&gt;China&lt;/cntry&gt; &lt;/currency&gt; ...etc </code></pre> <p>I need to use php to select and delete the specific currency, at the moment trying this: </p> <pre><code>&lt;?php $dom = new DOMDocument("1.0", "utf-8"); $dom-&gt;load('data/ccodes.xml'); $nodes = $dom-&gt;getElementsByTagName("currencies"); foreach ($nodes as $n){ if($n-&gt;getAttribute("ccode") == "CAD") { $parent = $n-&gt;parentNode; $parent-&gt;removeChild($n); } } echo $dom-&gt;saveXML(); ?&gt; </code></pre> <p>But It's not working.... I'm pretty sure it's really simple but I have no idea what I'm doing with coding... :/</p> <p>Need to make it so I can just change CAD to whatever to delete any currency I need to...</p> </div>

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

人工智能-计算机视觉实战之路(必备算法+深度学习+项目实战)

系列课程主要分为3大阶段:(1)首先掌握计算机视觉必备算法原理,结合Opencv进行学习与练手,通过实际视项目进行案例应用展示。(2)进军当下最火的深度学习进行视觉任务实战,掌握深度学习中必备算法原理与网络模型架构。(3)结合经典深度学习框架与实战项目进行实战,基于真实数据集展开业务分析与建模实战。整体风格通俗易懂,项目驱动学习与就业面试。 建议同学们按照下列顺序来进行学习:1.Python入门视频课程 2.Opencv计算机视觉实战(Python版) 3.深度学习框架-PyTorch实战/人工智能框架实战精讲:Keras项目 4.Python-深度学习-物体检测实战 5.后续实战课程按照自己喜好选择就可以

linux2.6.1内核源码注释

包含LINUX内核同步、信号、内存、调度、文件系统、网络系统、时钟等部分的源码注释。前后历时三年,算是干货。

Python可以这样学(第四季:数据分析与科学计算可视化)

董付国老师系列教材《Python程序设计(第2版)》(ISBN:9787302436515)、《Python可以这样学》(ISBN:9787302456469)配套视频,在教材基础上又增加了大量内容,通过实例讲解numpy、scipy、pandas、statistics、matplotlib等标准库和扩展库用法。

u-boot-2015.07.tar.bz2

uboot-2015-07最新代码,喜欢的朋友请拿去

Vue.js 2.0之全家桶系列视频课程

基于新的Vue.js 2.3版本, 目前新全的Vue.js教学视频,让你少走弯路,直达技术前沿! 1. 包含Vue.js全家桶(vue.js、vue-router、axios、vuex、vue-cli、webpack、ElementUI等) 2. 采用笔记+代码案例的形式讲解,通俗易懂

MySQL 8.0.19安装教程(windows 64位)

话不多说直接开干 目录 1-先去官网下载点击的MySQL的下载​ 2-配置初始化的my.ini文件的文件 3-初始化MySQL 4-安装MySQL服务 + 启动MySQL 服务 5-连接MySQL + 修改密码 先去官网下载点击的MySQL的下载 下载完成后解压 解压完是这个样子 配置初始化的my.ini文件的文件 ...

零基础学C#编程—C#从小白到大咖

本课程从初学者角度出发,提供了C#从入门到成为程序开发高手所需要掌握的各方面知识和技术。 【课程特点】 1 由浅入深,编排合理; 2 视频讲解,精彩详尽; 3 丰富实例,轻松易学; 4 每章总结配有难点解析文档。 15大章节,228课时,1756分钟与你一同进步!

微信公众平台开发入门

本套课程的设计完全是为初学者量身打造,课程内容由浅入深,课程讲解通俗易懂,代码实现简洁清晰。通过本课程的学习,学员能够入门微信公众平台开发,能够胜任企业级的订阅号、服务号、企业号的应用开发工作。 通过本课程的学习,学员能够对微信公众平台有一个清晰的、系统性的认识。例如,公众号是什么,它有什么特点,它能做什么,怎么开发公众号。 其次,通过本课程的学习,学员能够掌握微信公众平台开发的方法、技术和应用实现。例如,开发者文档怎么看,开发环境怎么搭建,基本的消息交互如何实现,常用的方法技巧有哪些,真实应用怎么开发。

java jdk 8 帮助文档 中文 文档 chm 谷歌翻译

JDK1.8 API 中文谷歌翻译版 java帮助文档 JDK API java 帮助文档 谷歌翻译 JDK1.8 API 中文 谷歌翻译版 java帮助文档 Java最新帮助文档 本帮助文档是使用谷

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

编程实现学生基本信息管理程序

编程实现学生基本信息管理程序。学生基本信息包括:学号、姓名、性别、年龄、班级、学院、专业等。具体实现的管理功能如下: (1) 输入并显示多个学生的基本信息; (2) 可根据需要实现学生信息的添加; (

机器学习实战系列套餐(必备基础+经典算法+案例实战)

机器学习实战系列套餐以实战为出发点,帮助同学们快速掌握机器学习领域必备经典算法原理并结合Python工具包进行实战应用。建议学习顺序:1.Python必备工具包:掌握实战工具 2.机器学习算法与实战应用:数学原理与应用方法都是必备技能 3.数据挖掘实战:通过真实数据集进行项目实战。按照下列课程顺序学习即可! 课程风格通俗易懂,用最接地气的方式带领大家轻松进军机器学习!提供所有课程代码,PPT与实战数据,有任何问题欢迎随时与我讨论。

YOLOv3目标检测实战:训练自己的数据集

YOLOv3是一种基于深度学习的端到端实时目标检测方法,以速度快见长。本课程将手把手地教大家使用labelImg标注和使用YOLOv3训练自己的数据集。课程分为三个小项目:足球目标检测(单目标检测)、梅西目标检测(单目标检测)、足球和梅西同时目标检测(两目标检测)。 本课程的YOLOv3使用Darknet,在Ubuntu系统上做项目演示。包括:安装Darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 Darknet是使用C语言实现的轻型开源深度学习框架,依赖少,可移植性好,值得深入探究。 除本课程《YOLOv3目标检测实战:训练自己的数据集》外,本人推出了有关YOLOv3目标检测的系列课程,请持续关注该系列的其它课程视频,包括: 《YOLOv3目标检测实战:交通标志识别》 《YOLOv3目标检测:原理与源码解析》 《YOLOv3目标检测:网络模型改进方法》 敬请关注并选择学习!

Python+OpenCV计算机视觉

Python+OpenCV计算机视觉系统全面的介绍。

土豆浏览器

土豆浏览器可以用来看各种搞笑、电影、电视剧视频

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

玩转Linux:常用命令实例指南

人工智能、物联网、大数据时代,Linux正有着一统天下的趋势,几乎每个程序员岗位,都要求掌握Linux。本课程零基础也能轻松入门。 本课程以简洁易懂的语言手把手教你系统掌握日常所需的Linux知识,每个知识点都会配合案例实战让你融汇贯通。课程通俗易懂,简洁流畅,适合0基础以及对Linux掌握不熟练的人学习; 【限时福利】 1)购课后按提示添加小助手,进答疑群,还可获得价值300元的编程大礼包! 2)本月购买此套餐加入老师答疑交流群,可参加老师的免费分享活动,学习最新技术项目经验。 --------------------------------------------------------------- 29元=掌握Linux必修知识+社群答疑+讲师社群分享会+700元编程礼包。 &nbsp;

基于STM32的电子时钟设计

时钟功能 还有闹钟功能,温湿度功能,整点报时功能 你值得拥有

Python数据清洗实战入门

本次课程主要以真实的电商数据为基础,通过Python详细的介绍了数据分析中的数据清洗阶段各种技巧和方法。

Git 实用技巧

这几年越来越多的开发团队使用了Git,掌握Git的使用已经越来越重要,已经是一个开发者必备的一项技能;但很多人在刚开始学习Git的时候会遇到很多疑问,比如之前使用过SVN的开发者想不通Git提交代码为什么需要先commit然后再去push,而不是一条命令一次性搞定; 更多的开发者对Git已经入门,不过在遇到一些代码冲突、需要恢复Git代码时候就不知所措,这个时候哪些对 Git掌握得比较好的少数人,就像团队中的神一样,在队友遇到 Git 相关的问题的时候用各种流利的操作来帮助队友于水火。 我去年刚加入新团队,发现一些同事对Git的常规操作没太大问题,但对Git的理解还是比较生疏,比如说分支和分支之间的关联关系、合并代码时候的冲突解决、提交代码前未拉取新代码导致冲突问题的处理等,我在协助处理这些问题的时候也记录各种问题的解决办法,希望整理后通过教程帮助到更多对Git操作进阶的开发者。 本期教程学习方法分为“掌握基础——稳步进阶——熟悉协作”三个层次。从掌握基础的 Git的推送和拉取开始,以案例进行演示,分析每一个步骤的操作方式和原理,从理解Git 工具的操作到学会代码存储结构、演示不同场景下Git遇到问题的不同处理方案。循序渐进让同学们掌握Git工具在团队协作中的整体协作流程。 在教程中会通过大量案例进行分析,案例会模拟在工作中遇到的问题,从最基础的代码提交和拉取、代码冲突解决、代码仓库的数据维护、Git服务端搭建等。为了让同学们容易理解,对Git简单易懂,文章中详细记录了详细的操作步骤,提供大量演示截图和解析。在教程的最后部分,会从提升团队整体效率的角度对Git工具进行讲解,包括规范操作、Gitlab的搭建、钩子事件的应用等。 为了让同学们可以利用碎片化时间来灵活学习,在教程文章中大程度降低了上下文的依赖,让大家可以在工作之余进行学习与实战,并同时掌握里面涉及的Git不常见操作的相关知识,理解Git工具在工作遇到的问题解决思路和方法,相信一定会对大家的前端技能进阶大有帮助。

计算机组成原理算法实现

计算机组成原理算法实现,能够实现定点小数的机器数表示、定点小数的变形补码加减运算、定点小数的原码一位乘法运算和浮点数的加减运算。

为linux系统设计一个简单的二级文件系统

实验目的: 通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。 实验要求: 为linux系统设计一个简单的二级文件系统。要求做到以下几点: (1)可以实现下列几条命令(至少4条)

几率大的Redis面试题(含答案)

本文的面试题如下: Redis 持久化机制 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 热点数据和冷数据是什么 Memcache与Redis的区别都有哪些? 单线程的redis为什么这么快 redis的数据类型,以及每种数据类型的使用场景,Redis 内部结构 redis的过期策略以及内存淘汰机制【~】 Redis 为什么是单线程的,优点 如何解决redis的并发竞争key问题 Red...

机器学习初学者必会的案例精讲

通过六个实际的编码项目,带领同学入门人工智能。这些项目涉及机器学习(回归,分类,聚类),深度学习(神经网络),底层数学算法,Weka数据挖掘,利用Git开源项目实战等。

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

本课程适合CCNA或HCNA网络小白同志,高手请绕道,可以直接学习进价课程。通过本预科课程的学习,为学习网络工程师、思科CCNA、华为HCNA这些认证打下坚实的基础! 重要!思科认证2020年2月24日起,已启用新版认证和考试,包括题库都会更新,由于疫情原因,请关注官网和本地考点信息。题库网络上很容易下载到。

2019全国大学生数学建模竞赛C题原版优秀论文

2019全国大学生数学建模竞赛C题原版优秀论文,PDF原版论文,不是图片合成的,是可编辑的文字版。共三篇。 C044.pdf C137.pdf C308.pdf

土豆SDK(Java版)-非官方

由于土豆SDK一直建设中,最近几天抽空写了一套java的SDK。包含了现有的所有请求协议。本套SDK中仅提供了oAuth的方式(引用oAuth.net的java版示例),并没有在框架中实现,涉及到登录

Android小项目——新闻APP(源码)

Android小项目——新闻APP(源码),一个很简单的可以练手的Android Demo Ps:下载之前可以先看一下这篇文章——https://blog.csdn.net/qq_34149526/a

实用主义学Python(小白也容易上手的Python实用案例)

原价169,限时立减100元! 系统掌握Python核心语法16点,轻松应对工作中80%以上的Python使用场景! 69元=72讲+源码+社群答疑+讲师社群分享会&nbsp; 【哪些人适合学习这门课程?】 1)大学生,平时只学习了Python理论,并未接触Python实战问题; 2)对Python实用技能掌握薄弱的人,自动化、爬虫、数据分析能让你快速提高工作效率; 3)想学习新技术,如:人工智能、机器学习、深度学习等,这门课程是你的必修课程; 4)想修炼更好的编程内功,优秀的工程师肯定不能只会一门语言,Python语言功能强大、使用高效、简单易学。 【超实用技能】 从零开始 自动生成工作周报 职场升级 豆瓣电影数据爬取 实用案例 奥运冠军数据分析 自动化办公:通过Python自动化分析Excel数据并自动操作Word文档,最终获得一份基于Excel表格的数据分析报告。 豆瓣电影爬虫:通过Python自动爬取豆瓣电影信息并将电影图片保存到本地。 奥运会数据分析实战 简介:通过Python分析120年间奥运会的数据,从不同角度入手分析,从而得出一些有趣的结论。 【超人气老师】 二两 中国人工智能协会高级会员 生成对抗神经网络研究者 《深入浅出生成对抗网络:原理剖析与TensorFlow实现》一书作者 阿里云大学云学院导师 前大型游戏公司后端工程师 【超丰富实用案例】 0)图片背景去除案例 1)自动生成工作周报案例 2)豆瓣电影数据爬取案例 3)奥运会数据分析案例 4)自动处理邮件案例 5)github信息爬取/更新提醒案例 6)B站百大UP信息爬取与分析案例 7)构建自己的论文网站案例

相关热词 c# 按行txt c#怎么扫条形码 c#打包html c# 实现刷新数据 c# 两个自定义控件重叠 c#浮点类型计算 c#.net 中文乱码 c# 时间排序 c# 必备书籍 c#异步网络通信
立即提问