0
我在XML文件中的以下節點:無法刪除空的XML節點@「// * [不是(節點())]」
<PERSON>
<LEOKA_DATA> </LEOKA_DATA>
</PERSON>
我不能刪除LEOKA標籤使用以下代碼(片斷):
string file = CommonVariables.MainDir + @"\Schemas\RemoveEmptyTags.xsl";
try
{
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(tempFile); //tempfile is the xml file
XmlNodeList emptyElements = xmlDocument.SelectNodes(@"//*[not(node())]");
if (emptyElements != null)
for (int i = emptyElements.Count - 1; i >= 0; i--)
{
var parentNode = emptyElements[i].ParentNode;
if (parentNode != null)
{
if (emptyElements[i].Name != "LINE")
parentNode.RemoveChild(emptyElements[i]);
}
}
}
catch (FileNotFoundException ex)
{ **something here** }
然而,上面的代碼工作,如果該節點是象下面這樣(注意開始標記和結束標記之間沒有空格):
<LEOKA></LEOKA>
我也嘗試使用下面的代碼,但沒有工作:
var doc = XDocument.Parse(tempfile);
var emptyElements = from descendant in doc.Descendants()
where string.IsNullOrWhiteSpace(descendant.Value)
select descendant;
emptyElements.Remove();
任何幫助將非常感激。如果您需要更多詳細信息,請告訴我。謝謝。
可能的重複[按照包含使用XPath的空白值查找節點](http://stackoverflow.com/questions/393840/locating-the-node-by-value-containing-whitespaces-using-xpath) – 2015-02-05 14:56:24
正在尋找一個包含空格的標籤,並且空白可以由多個字符組成,如' '用於製表符,或' '用於換行符等等。因此,即使是一個簡單的空格字符,也等於一個值。因此,它不會使用not(node())查找具有空格字符的節點。 – 2015-02-05 14:59:53
即使使用字符串長度(text()),它也不起作用,因爲字符串的長度爲1,並帶有空格char。 – 2015-02-05 15:01:18