Вопрос по c#, xml – Проверьте, существует ли элемент XML

30

Как кто-то может проверить, существует ли определенный элемент в файле XML? Скажем, у меня есть постоянно меняющийся XML-файл, и мне нужно проверить, что каждый элемент существует, прежде чем читать / анализировать его.

Ваш Ответ

12   ответов
2

sangam код

if (chNode["innerNode"]["innermostNode"]==null)
            return true; //node    *parentNode*/innerNode/innermostNode exists
4

что вы хотите сделать, но вам может понадобиться использование DTD или схемы.validate XML.

В противном случае, если вы хотитеfind элемент, вы можете использовать запрос xpath для поиска определенного элемента.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
0

null-coalescing operator сSelectSingleNode работал угощение, присваивая нуль со строкой.

 foreach (XmlNode txElement in txElements)
 {
     var txStatus = txElement.SelectSingleNode(".//ns:TxSts", nsmgr).InnerText ?? string.Empty;
     var endToEndId = txElement.SelectSingleNode(".//ns:OrgnlEndToEndId", nsmgr).InnerText ?? string.Empty;
     var paymentAmount = txElement.SelectSingleNode(".//ns:InstdAmt", nsmgr).InnerText ?? string.Empty;
     var paymentAmountCcy = txElement.SelectSingleNode(".//ns:InstdAmt", nsmgr).Attributes["Ccy"].Value ?? string.Empty;
     var clientId = txElement.SelectSingleNode(".//ns:OrgnlEndToEndId", nsmgr).InnerText ?? string.Empty;
     var bankSortCode = txElement.SelectSingleNode(".//ns:OrgnlEndToEndId", nsmgr).InnerText ?? string.Empty; 

     //TODO finish Object creation and Upsert DB
  }
1

используя язык схемы XML, напримерXSD.

Если вы имеете в виду условно, в коде, тоXPath тоже стоит посмотреть

49

if(doc.SelectSingleNode("//mynode")==null)....

В качестве альтернативы вы можете использовать XSD и проверить его

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
4

// если проблема в & quot; просто & quot; чтобы убедиться, что элемент существует в xml-файле // извлечь значение, которое вы могли бы сделать так

XmlNodeList YOURTEMPVARIABLE = doc.
        if (YOURTEMPVARIABLE.Count > 0 )
        {
            doctype = YOURTEMPVARIABLE[0].InnerXml;

        }
        else
        {
            doctype = "";
        }
0

XmlNodeList NodoEstudios = DocumentoXML.SelectNodes("//ALUMNOS/ALUMNO[@id=\"" + Id + "\"]/estudios");

string Proyecto = "";

foreach(XmlElement ElementoProyecto in NodoEstudios)
{
    XmlNodeList EleProyecto = ElementoProyecto.GetElementsByTagName("proyecto");
    Proyecto = (EleProyecto[0] == null)?"": EleProyecto[0].InnerText;
}
4

using (XmlTextReader reader = new XmlTextReader(xmlPath))
{
    while (reader.Read())
    {
        if (reader.NodeType == XmlNodeType.Element)
        { 
            //do your code here
        }
    }
}
0

// Проверяем значение элемента xml, если оно существует, используя XmlReader

          using (XmlReader xmlReader = XmlReader.           {

               if (xmlReader.ReadToFollowing("XMLNODE")) 

                {
                    string nodeValue = xmlReader.ReadElementString("XMLNODE");                
                }
            }     
-2

// Я нахожу дочерний узел ERNO на втором, но последнем месте Если StrComp (xmlnode (i) ..Item (xmlnode (i) ..Count - 1) .Name.ToString (), & quot; ERNO & quot ;, CompareMethod.Text) = 0 Тогда                 xmlnode (i) ..Item (xmlnode (i) ..Count - 1) .InnerText = c             еще                 elem = xmldoc.CreateElement ("ERNo")                 elem.InnerText = c.ToString                 root. (я) .AppendChild (эль)             End If

Error: User Rate Limit Exceeded
4

doc.Load(xmlPath);
        XmlNodeList node = doc.SelectNodes("//Nodes/Node");
        foreach (XmlNode chNode in node)
        {
            try{
            if (chNode["innerNode"]==null)
                return true; //node exists
            //if ... check for any other nodes you need to
            }catch(Exception e){return false; //some node doesn't exists.}
        }

Вы перебираете все элементы Node в узлах Nodes (скажем, это root) и проверяете, является ли узел с именем «aNNNORNODE». (добавьте другие, если вам нужно) существует. try..catch потому, что я подозреваю, что это приведет к тому, что популярная ссылка на объект не установлена. ошибка, если узел не существует.

0

еделенного узла в файле XML.

public boolean envParamExists(String xmlFilePath, String paramName){
    try{
        Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new File(xmlFilePath));
        doc.getDocumentElement().normalize();
        if(doc.getElementsByTagName(paramName).getLength()>0)
            return true;
        else
            return false;
    }catch (Exception e) {
        //error handling
    }
    return false;
}

Похожие вопросы