Как кто-то может подтвердить, что определенный элемент существует в XML файле? Скажем, у меня постоянно меняющийся XML файл, и мне нужно проверить, что каждый элемент существует до его чтения/разбора.
Проверьте, существует ли XML-элемент
Ответ 1
if(doc.SelectSingleNode("//mynode")==null)....
Должен сделать это (где doc - ваш объект XmlDocument, очевидно)
В качестве альтернативы вы можете использовать XSD и проверять на него
Ответ 2
Вы можете выполнять итерацию через каждый node и видеть, существует ли node.
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 под узлами (скажем, это root) и проверяете, существует ли node с именем 'innerNode' (добавьте другие, если вам нужно). try..catch - это потому, что я подозреваю, что это вызовет популярную ошибку 'object reference not set', если node не существует.
Ответ 3
Не уверен, что вы хотите сделать, но с использованием DTD или схемы может быть все, что вам нужно, чтобы проверить xml.
В противном случае, если вы хотите найти элемент, вы можете использовать запрос xpath для поиска определенного элемента.
Ответ 4
Как пробовать это:
using (XmlTextReader reader = new XmlTextReader(xmlPath))
{
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element)
{
//do your code here
}
}
}
Ответ 5
//если проблема "просто", чтобы убедиться, что элемент существует в xml файле перед вами // извлекаем значение, которое вы могли бы сделать следующим образом:
XmlNodeList YOURTEMPVARIABLE = doc.GetElementsByTagName("YOUR_ELEMENTNAME");
if (YOURTEMPVARIABLE.Count > 0 )
{
doctype = YOURTEMPVARIABLE[0].InnerXml;
}
else
{
doctype = "";
}
Ответ 6
Вы можете проверить это и многое другое с помощью языка XML-схемы, например XSD.
Если вы имеете в виду условно, внутри кода, то XPath тоже стоит посмотреть.
Ответ 7
дополнительно к sangam
code
if (chNode["innerNode"]["innermostNode"]==null)
return true; //node *parentNode*/innerNode/innermostNode exists
Ответ 8
Ниже приведена простая функция, чтобы проверить, присутствует ли какой-либо конкретный node или нет в 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;
}
Ответ 9
Немного поздно, но если это помогает, это работает для меня...
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;
}
Ответ 10
//Проверяем значение элемента xml, если оно существует с помощью XmlReader
using (XmlReader xmlReader = XmlReader.Create(new StringReader("XMLSTRING")))
{
if (xmlReader.ReadToFollowing("XMLNODE"))
{
string nodeValue = xmlReader.ReadElementString("XMLNODE");
}
}