目标名称空间正在xpath输出中打印

时间:2017-09-28 09:18:14

标签: xml xpath

我正在尝试编写一个仅显示标记和值的xpath。

这是xml文件:

public class DeviceContext : DbContext
{
    public DeviceContext(DbContextOptions<DeviceContext> options) : base (options)
    {
    }

    public DbSet<Device> Devices { get; set; }
    public DbSet<IpMac> IpMacs { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {

        modelBuilder.Entity<IpMac>().ToTable("Device");
        modelBuilder.Entity<Device>().ToTable("Device");
        Logger.Log("DeviceContext: Database & Tables SET.");
    }
}

我的xpath是:

<v11:root xmlns:v11="http://example.com">
<v11:Four-Sided>
<v11:SquareName>ABCD</v11:SquareName> 
<v11:RectangleName>EFGH</v11:RectangleName> 
<v11:ParallelName>WXYZ</v11:ParallelName> 
</v11:Four-Sided>
</v11:root>

期望的输出:

//v11:SquareName

实际输出:

<v11:SquareName>ABCD</v11:SquareName>

1 个答案:

答案 0 :(得分:2)

XPath引擎不是将值序列化为词汇XML,而是传递XPath结果的其他软件。 (XPath用于选择节点,随后节点发生的任何事情都超出了XPath的控制范围。)

尽管如此,给定元素节点的大多数XML序列化库都会将其输出为包含所有必需命名空间声明的格式良好的XML文档。如果没有命名空间声明,你怎么知道“v11”是什么意思,或者用它做什么有用的东西?