Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / XML namespaces / 9 сообщений из 9, страница 1 из 1
21.09.2004, 14:41
    #32704383
timda
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML namespaces
чего то я с наймспайсами не могу разобраться
я на сколько понимаю дело в неймспейсах
а где какой указывать надо - подскажите плиз


Невозможно отправить форму.
Во время отправки формы произошла ошибка.
В ответе SOAP указывается, что на сервере возникла ошибка:

авторSystem.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.Xml.XPath.XPathException: Namespace Manager or XsltContext needed. This query has a prefix, variable, or user-defined function.
at System.Xml.XPath.CompiledXpathExpr.get_QueryTree()
at System.Xml.XPath.XPathSelectionIterator..ctor(XPathNavigator nav, XPathExpression expr)
at System.Xml.XPath.XPathNavigator.Select(String xpath)
at System.Xml.XmlNode.SelectSingleNode(String xpath)
at Service.CompanyService.CompanySet(XmlElement objXmlDoc) in c:\drtupilot\service\companyservice.asmx.cs:line 90
--- End of inner exception stack trace ---

Код: plaintext
авторpublic XmlDocument CompanySet(XmlElement objXmlDoc)
{
objXmlDoc.SetAttribute("xmlns:my", "http://schemas.microsoft.com/office/infopath/2003/myXSD/2004-09-10T11:38:06");
XmlNode node = objXmlDoc.SelectSingleNode("/my:Fields/my:Company/my:CompanyId");
companyItem.Id = node.InnerText.Replace("'","''");

timda.ru
...
Рейтинг: 0 / 0
21.09.2004, 15:16
    #32704528
greenapple
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML namespaces
см. класс XmlNamespaceManager, это я скопировал asp.net 2 и XPathDocument, но суть тут в том же: сначала создать XmlNamespaceManager на основе NameTable у XmlDocument, к нему добавлять нэймспэйсы, и потом для XPathExpression задать контекст, передав XmlNamespaceManager.

примерно так будет

XmlNamespaceManager namespaceManager = new XmlNamespaceManager(xpathNavigator.NameTable);
namespaceManager.AddNamespace("xlink", "http://www.w3.org/1999/xlink");

XPathExpression expression = xpathNavigator.Compile("//graphic/@xlink:href");
expression.SetContext(namespaceManager);
...
Рейтинг: 0 / 0
22.09.2004, 13:14
    #32706270
timda
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML namespaces
помоему как то сложно ;-)
где то в другом "зарыт клад" )))
просто XML документ с неймспейсами прочитать - не такая уж сложная вродь задача ;-)

timda.ru
...
Рейтинг: 0 / 0
22.09.2004, 14:54
    #32706671
greenapple
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML namespaces
по другому невозможно, XPath engine нужно знать нэймспэйс
префиксы, в том числе и для default namespace, если он задан специально
...
Рейтинг: 0 / 0
22.09.2004, 15:09
    #32706714
greenapple
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML namespaces
по другому невозможно, XPath engine нужно знать нэймспэйс
префиксы, в том числе и для default namespace, если он задан специально
...
Рейтинг: 0 / 0
24.09.2004, 12:44
    #32710200
timda
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML namespaces
тоесть чтобы прочитать поле из обычного XML документа только с наймспейсом
необходимо проделать такую кучу кода ?

XmlNode node = objXmlDoc.SelectSingleNode("/my:Fields/my:Company/my:CompanyId");

тоесть вместо трех строчек - надо писать 20 ;-)
не верю ;-)

а у вас есть примеры кода как вы это обрабатываете ?
если есть скопируйте пожалуйста сюда

timda.ru
...
Рейтинг: 0 / 0
24.09.2004, 15:51
    #32710728
greenapple
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML namespaces
так а я вроде скопировал, это вроде и вопрос из FAQ . В XSLT тоже нужно для контекста XPath задавать нэймспэйсы, так что страшного нет ничего, где тут 20 строк то?
...
Рейтинг: 0 / 0
29.09.2004, 10:33
    #32715953
timda
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML namespaces
спасибо, буду разбираться ;-)

timda.ru
...
Рейтинг: 0 / 0
08.10.2004, 19:28
    #32730791
timda
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML namespaces
Есть XML документ - file.xml
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
<?xml version="1.0" encoding="UTF-8"?>
<my:Fields xmlns:my="http://timda.ru/ns/">
	<my:Company>
		<my:CompanyName>Slotgame</my:CompanyName>
		<my:CompanyAddress>Moscow</my:CompanyAddress>
	</my:Company>
</my:Fields>


чтобы достать CompanyName

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
using System.Xml;
using System.Xml.XPath;

............

XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("file.xml"));
XmlNamespaceManager manager = new XmlNamespaceManager(doc.NameTable);
manager.AddNamespace("my", "http://timda.ru/ns/");

XmlNode node = doc.SelectSingleNode("/my:Fields/my:Company/my:CompanyName", manager);
string CompanyName = node.InnerText;



timda.ru
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / XML namespaces / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]