Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# &引用;';:';名称中不能包含十六进制值0x3A的字符;_C#_Xml_Linq To Xml_Infopath - Fatal编程技术网

C# &引用;';:';名称中不能包含十六进制值0x3A的字符;

C# &引用;';:';名称中不能包含十六进制值0x3A的字符;,c#,xml,linq-to-xml,infopath,C#,Xml,Linq To Xml,Infopath,我有一个代码可以读取一些xml文件。我尝试了不同的方法来解决这个问题,但没有成功。我还试着这样编写代码: Namespace my = "http://schemas.microsoft.com/office/infopath/2003/myXSD/2011-01-11T08:31:30"; XElement myEgitimBilgileri = XDocument.Load(@"C:\25036077.xml").Element("my:"+ "Egitim_

我有一个代码可以读取一些xml文件。我尝试了不同的方法来解决这个问题,但没有成功。我还试着这样编写代码:

Namespace my = "http://schemas.microsoft.com/office/infopath/2003/myXSD/2011-01-11T08:31:30";                
XElement myEgitimBilgileri = XDocument.Load(@"C:\25036077.xml").Element("my:"+ "Egitim_Bilgileri"); 
但一直都是同样的错误。这是原件:

private void button2_Click(object sender, EventArgs e)
{                               
    XElement myEgitimBilgileri =    
    XDocument.Load(@"C:\25036077.xml").Element("my:Egitim_Bilgileri");

    if (myEgitimBilgileri != null)
    {
        foreach (XElement element in myEgitimBilgileri.Elements())
        {
            Console.WriteLine("Name: {0}\tValue: {1}", element.Name, element.Value.Trim());
        }
    }

    Console.Read();
}
以下是我的xml文件的路径:

<my:Egitim_Bilgileri>
        <my:egitimler_sap>
            <my:sap_eduname></my:sap_eduname>
            <my:sap_edufaculty></my:sap_edufaculty>
            <my:sap_eduprofession></my:sap_eduprofession>
            <my:sap_diplomno></my:sap_diplomno>
            <my:sap_edulevel></my:sap_edulevel>
            <my:sap_edustartdate xsi:nil="true"></my:sap_edustartdate>
            <my:sap_eduenddate xsi:nil="true"></my:sap_eduenddate>
        </my:egitimler_sap>
    </my:Egitim_Bilgileri>
代码
元素(“my:“+”Egitim\u Bilgileri”)
元素(“my:Egitim\u Bilgileri”)
相同,这意味着默认名称空间中名为“my:Egitim\u Bilgileri”的元素(有一个)

但是,
在元素名称中无效(在命名空间分隔之外),因此将导致运行时异常

相反,代码应该是
元素(my+“Egitim\u Bilgileri”)
,其中
my
是一个对象。当给定一个字符串作为第二个操作数时,XNamespace对象的
+
运算符将生成一个对象,然后该对象可以与该方法一起使用

例如:

XNamespace my = "http://schemas.microsoft.com/office/infopath/2003/myXSD/2011-01-11T08:31:30";
XDocument doc = XDocument.Load(@"C:\25036077.xml");
// The following variable/assignment can be omitted,
// it is to show the + operator of XNamespace and how it results in XName
XName nodeName = my + "Egitim_Bilgileri";
XElement myEgitimBilgileri = doc.Element(nodeName);
快乐编码。。。对不得不处理InfoPath的问题表示哀悼:)


我更喜欢在大多数情况下使用XPath。除其他事项外,它允许轻松选择嵌套节点,并避免在
node.Element(x).Element(y)
构造中可能需要的每个级别上“检查null”

using System.Xml.XPath; // for XPathSelectElement extension method
XmlNamespaceManager ns = new XmlNamespaceManager(new NameTable());
ns.AddNamespace("my", "http://schemas.microsoft.com/office/infopath/2003/myXSD/2011-01-11T08:31:30")
// Note that there is no XName object. Instead the XPath string is parsed
// and namespace resolution happens via the XmlNamespaceManager
XElement myEgitimBilgileri = doc.XPathSelectElement("/my:myFields/my:Egitim_Bilgileri", ns);

您好,谢谢,但是现在程序没有看到我需要的元素。我的意思是if(myEgitimBilgileri!=null)为null。是的,我想使用Elemets()。您能帮助运行此代码吗?@Abdulyar验证名称空间是否正确,以及它们是否在XML中正确指定。文章中提到了两个名称空间。(我怀疑所显示的XML片段不是文档的根元素……<代码>元素/元素< /代码>只查看直接子集。请考虑<代码> xPaseStudioServices < /代码>以获得更高级的查询。如果您不介意,可以在在线信使中与您进行对话吗?@ abdulyar不喜欢,抱歉。请随意使用任何相关信息(例如,完整的XML)更新帖子,我可以从那里更新我的答案。如果这确实是根元素,那么它似乎缺少一个
xmlns:my=..
。这个问题似乎已经得到了回答。您能否接受答案或澄清是否存在任何长期存在的问题?另请参阅。
using System.Xml.XPath; // for XPathSelectElement extension method
XmlNamespaceManager ns = new XmlNamespaceManager(new NameTable());
ns.AddNamespace("my", "http://schemas.microsoft.com/office/infopath/2003/myXSD/2011-01-11T08:31:30")
// Note that there is no XName object. Instead the XPath string is parsed
// and namespace resolution happens via the XmlNamespaceManager
XElement myEgitimBilgileri = doc.XPathSelectElement("/my:myFields/my:Egitim_Bilgileri", ns);