В Java все находится в форме класса.
Если вы хотите использовать любой объект, тогда у вас есть две фазы:
Пример:
Object a;
a=new Object();
То же самое для концепции массива
Item i[]=new Item[5];
i[0]=new Item();
Если вы не дают секцию инициализации, тогда возникает NullpointerException
.
Просто поймайте исключение. Маленькие издержки от ловли исключения тонут по сравнению с парсингом XML.
, Если Вы хотите функцию (по стилистическим причинам, не по производительности), реализуйте его сами:
public class MyXmlDocument: XmlDocument
{
bool TryParseXml(string xml){
try{
ParseXml(xml);
return true;
}catch(XmlException e){
return false;
}
}
Используя XmlValidatingReader предотвратит исключения, если Вы обеспечите свой собственный ValidationEventHandler.
Если ловля слишком много для Вас, то Вы могли бы хотеть проверить XML заранее, с помощью XML-схемы, удостовериться, что XML в порядке, Но это, вероятно, будет хуже, чем ловля.
AS, уже, сказал, я скорее поймаю исключение, но использование XmlParserContext, Вы могли попытаться проанализировать "вручную" и прервать любую аномалию; однако, если Вы не анализируете 100 фрагментов XML в секунду, почему, не ловя исключение?
Мне не удалось заставить работать XmlValidatingReader и ValidationEventHandler. Исключение XmlException по-прежнему создается для неправильно сформированного xml. Я проверил это, просмотрев методы с отражателем.
Мне действительно нужно проверять сотни коротких фрагментов XHTML в секунду.
public static bool IsValidXhtml(this string text)
{
bool errored = false;
var reader = new XmlValidatingReader(text, XmlNodeType.Element, new XmlParserContext(null, new XmlNamespaceManager(new NameTable()), null, XmlSpace.None));
reader.ValidationEventHandler += ((sender, e) => { errored = e.Severity == System.Xml.Schema.XmlSeverityType.Error; });
while (reader.Read()) { ; }
reader.Close();
return !errored;
}
XmlParserContext тоже не работал.
Кто-нибудь преуспел с регулярным выражением?