我使用XDocument加载XML文件,使用此内容,我尝试读取<pjob:job_variables>节点内容,并为<pjob:job_variables>中的每个节点获取名称和值,
所以对于<pjob:var name="XMLFilePath">E:\PP\REPC.xt</pjob:var>要得到名称XMLFilePath和它的值E:\PP\REPC.xt

<?xml version="1.0"?>
<?P_command version="1.0"?>
<pjob:job_command xmlns:pjob="http://www.pp.com/schemas" name="SubmitJob">
    <pjob:job_variables>
        <pjob:var name="XMLFilePath">E:\PP\REPC.xt</pjob:var>
        <pjob:var name="TSLFilePath">E:\PP\REPC.tl</pjob:var>
        <pjob:var name="_sys_BitmapType">jpeg</pjob:var>
        .........
    </pjob:job_variables>
    <pjob:doc_variables>
        <pjob:var name="CompanyPhone"/>
        <pjob:var name="CompanyWebsite">www.site.com</pjob:var>
        .........
    </pjob:doc_variables>
</pjob:job_command>

我尝试了很多变化,比如
string name, value = String.Empty;
XDocument doc = XDocument.Load("../assets/packet.xml");
var authors = doc.Descendants("job_variables");
foreach (var node in nodes)
{
  name = node.name;
  value = node.value;
}

但他没有找到,我该怎么办?

最佳答案

您只需在名称空间前面加上前缀即可:

XNamespace ns = "http://www.pp.com/schemas";
XDocument doc = XDocument.Load("../assets/packet.xml");
var authors = doc.Root.Element(ns + "job_variables").Elements();

或者使用pjob方法:
var authors = doc.Root.Element(XName.Get("job_variables", "http://www.pp.com/schemas")).Elements();

这将获取“job_variables”元素的所有子元素。
正如注释中所指定的,要同时获取XName.Get()job_variables元素,您甚至不需要通过它们的名称访问这些元素;只需使用doc_variables

09-07 01:34