удалить атрибут, если он существует из xmldocument - PullRequest
6 голосов
/ 08 июля 2011

Как удалить атрибут из XmlDocument, если атрибут существует в документе?Пожалуйста помоги.Я использую RemoveAttribute, но как я могу проверить, существует ли он?с именем "DataFieldName".

Ответы [ 2 ]

12 голосов
/ 09 июля 2011

Не совсем точно, что вы пытаетесь сделать, вот два примера.

Удаление атрибута:

var doc = new System.Xml.XmlDocument();
doc.Load("somefile.xml");
var root = doc.FirstChild;

foreach (System.Xml.XmlNode child in root.ChildNodes)
{
    if (child.Attributes["Name"] != null)
        child.Attributes.Remove(child.Attributes["Name"]);
}

Установка атрибута в пустую строку:

var doc = new System.Xml.XmlDocument();
doc.Load("somefile.xml");
var root = doc.FirstChild;

foreach (System.Xml.XmlNode child in root.ChildNodes)
{
    if (child.Attributes["Name"] != null)
        child.Attributes["Name"].Value = "";
}

Редактировать: я могу попытаться изменить свой код, если вы уточните свой оригинальный запрос. XML-документ может иметь только один корневой узел, а ваш - record1. Значит ли это, что весь ваш файл будет содержать только одну запись? Или вы хотели что-то вроде

<?xml version="1.0" standalone="yes" ?>
<Records>
    <Record>
        <Attribute Name="DataFieldName" Value="Pages" />
    </Record>
    <Record>
        <Attribute Name="DataFieldName" Value="Pages" />
    </Record>
</Records>
1 голос
/ 21 марта 2014

Вы можете использовать метод XmlNamedNodeMap.RemoveNamedItem (name), чтобы сделать это. Его можно использовать для атрибутов. Он вернет XmlNode, удаленный из этого XmlNamedNodeMap, или нулевую ссылку (Nothing в Visual Basic), если соответствующий узел не был найден.

    [C#] 
    using System;
    using System.IO;
    using System.Xml;

   public class Sample
   {
    public static void Main()
    {
     XmlDocument doc = new XmlDocument();
     doc.LoadXml("<book genre='novel' publicationdate='1997'> " +
                 "  <title>Pride And Prejudice</title>" +
                 "</book>");      

     XmlAttributeCollection attrColl = doc.DocumentElement.Attributes;

     // Remove the publicationdate attribute.
     attrColl.RemoveNamedItem("publicationdate");

     Console.WriteLine("Display the modified XML...");
     Console.WriteLine(doc.OuterXml);

     }
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...